public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: Manuel.Serrano@inria.fr To: gcc-gnats@gcc.gnu.org Subject: c/5830: The compiler crashes Date: Mon, 04 Mar 2002 07:56:00 -0000 [thread overview] Message-ID: <20020304155502.12673.qmail@sources.redhat.com> (raw) >Number: 5830 >Category: c >Synopsis: The compiler crashes >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: rejects-legal >Submitter-Id: net >Arrival-Date: Mon Mar 04 07:56:01 PST 2002 >Closed-Date: >Last-Modified: >Originator: Manuel.Serrano@inria.fr >Release: unknown-1.0 >Organization: >Environment: [bigloo@redrock bigloo2.4d]$ uname -a Linux redrock.inria.fr 2.4.8-26mdksmp #1 SMP Sun Sep 23 16:04:21 CEST 2001 i686 unknown [bigloo@redrock bigloo2.4d]$ gcc-3.0.1 --version 3.0.1 >Description: The compiler crashes when compilling this large file: >How-To-Repeat: gcc-3.0.1 -O2 bug.c >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="bug.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bug.c" Lyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0qLwovKiAgIChFdmFsL2V2Y29tcGlsZS5zY20pICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICAgQmlnbG9v ICgyLjRkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKi8KLyogICBNYW51ZWwgU2VycmFubyAoYykgICAgICAgTW9uIE1hciA0IDE2OjEw OjI3IENFVCAyMDAyICAgICAgICAgICAgICAgICAgICAqLwovKj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSov CgovKiBHQyBzZWxlY3Rpb24gKi8KI2RlZmluZSBUSEVfR0MgQk9FSE1fR0MKCi8qPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ki8KLyogICAgc2VycmFuby9wcmdtL3Byb2plY3QvYmlnbG9vL3J1bnRpbWUvSW5jbHVkZS9i aWdsb28uaCAgICAgICAgICAgICAqLwovKiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICovCi8qICAgIEF1dGhvciAgICAg IDogIE1hbnVlbCBTZXJyYW5vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8K LyogICAgQ3JlYXRpb24gICAgOiAgVGh1IE1hciAxNiAxODo0ODoyMSAxOTk1ICAgICAgICAgICAg ICAgICAgICAgICAgICAqLwovKiAgICBMYXN0IGNoYW5nZSA6ICBXZWQgRmViIDI3IDEyOjMxOjA5 IDIwMDIgKHNlcnJhbm8pICAgICAgICAgICAgICAgICovCi8qICAgIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgKi8KLyogICAg QmlnbG9vJ3Mgc3R1ZmYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqLwovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSovCiNpZm5kZWYgQklHTE9PX0ggCiNkZWZpbmUgQklH TE9PX0gKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgRG9lcyBzb21lb25lIHJlYWxseSB3YW50cyBD KysgaGVyZT8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov CiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiIHsKI2VuZGlmCgovKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov Ci8qICAgIFRoZSBlc3NlbnRpYWwgaW5jbHVkZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwojaW5jbHVkZSA8c3RkaW8uaD4KI2lu Y2x1ZGUgPHNldGptcC5oPgojaW5jbHVkZSA8ZXJybm8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoj aW5jbHVkZSA8bWF0aC5oPgoKI2lmIGRlZmluZWQoIHNvbnlfbmV3cyApCiMgICBpbmNsdWRlIDxu ZXdzL21hY2hwYXJhbS5oPgojZW5kaWYKI2luY2x1ZGUgPGxpbWl0cy5oPgogCi8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKi8KLyogICAgQklHTE9PX01BSU4gLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqLwovKiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICovCi8qICAgIEluIG9yZGVyIHRv IHVzZSBhIGN1c3RvbSBDIGBtYWluJyBmdW5jdGlvbiwgZGVmaW5lcyB0aGlzICAgICAgICAgKi8K LyogICAgbWFjcm8gdG8gYW5vdGhlciB2YWx1ZSAoZS5nLiBibWFpbiAoZG9uJ3QgdXNlIHRoZSBf YmlnbG9vX21haW4gICAqLwovKiAgICBvciBiaWdsb29fbWFpbiBiZWNhdXNlIHRoZXkgYXJlIGFs cmVhZCB1c2VkKSkuIFRoZW4gaW4geW91ciAgICAgICovCi8qICAgIG93biBgbWFpbicgZnVuY3Rp b24sIGludm9rZSB0aGlzIG9uZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0qLwojaWYoICFkZWZpbmVkKCBCSUdMT09fTUFJTiApICkKIyAgIGRlZmluZSBCSUdM T09fTUFJTiBtYWluCiNlbmRpZgoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBUaGUgQkdMX0hFQVBf REVCVUcgcmVxdWlyZXMgdGhlIEdDIGJhY2twb2ludGVycyBhbGxvY2F0aW9uICAgICAgICovCi8q LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKi8KI2lmKGRlZmluZWQoIEJHTF9IRUFQX0RFQlVHICkgKQogICAgICAgLS0+ IGVycm9yICJCR0xfSEVBUF9ERUJVRyBEZXByZWNhdGVkLiBTaG91bGQgbm90IGJlIGRlZmluZWQg YW55bG9uZ2VyISIKI2VuZGlmCiAgIAojaWYoIGRlZmluZWQoIEtFRVBfQkFDS19QVFJTICkgKQoj ICAgZGVmaW5lIEJHTF9IRUFQX0RFQlVHX01BUktfT0JKKCB4ICkgYmdsX2hlYXBfZGVidWdfbWFy a19vYmooIHggKQojICAgZGVmaW5lIEJHTF9IRUFQX0RFQlVHX01BUktfU1RSKCB4ICkgYmdsX2hl YXBfZGVidWdfbWFya19zdHIoIChjaGFyICopKHgpICkKI2Vsc2UKIyAgIGRlZmluZSBCR0xfSEVB UF9ERUJVR19NQVJLX09CSiggeCApIHgKIyAgIGRlZmluZSBCR0xfSEVBUF9ERUJVR19NQVJLX1NU UiggeCApIHgKI2VuZGlmCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qICAgIEJEQl9MSUJSQVJZX01BR0lD X05VTUJFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogICAg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSAgICAqLwovKiAgICBUaGlzIG51bWJlciBpcyB1c2VkIHRvIGVuc3VyZSB0aGUgY29tcGF0 aWJpbGl0eSBiZXR3ZWVuIHRoZSAgICAgICovCi8qICAgIGNvbXBpbGVyIGFuZCB0aGUgYmxpYiBs aWJyYXJ5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0qLwojZGVmaW5lIEJEQl9MSUJSQVJZX01BR0lDX05VTUJFUiAoKGNoYXIgKikweDEwMjQpCiAg ICAgICAKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBCSUdMT09fRVhJVCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K I2lmKCAhZGVmaW5lZCggQklHTE9PX0VYSVQgKSApCiMgICBkZWZpbmUgQklHTE9PX0VYSVQgYmln bG9vX2V4aXQKI2VuZGlmCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qICAgIEdsb2JhbCBjb25maWd1cmF0 aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0qLwovKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmaWxlIChkb24ndCBlZGl0KSAq LwovKiBNb24gTWFyICA0IDE2OjQxOjAwIENFVCAyMDAyICovCgojdW5kZWYgQkdMX1JFTEVBU0Vf TlVNQkVSCiNkZWZpbmUgQkdMX1JFTEVBU0VfTlVNQkVSICIyLjRkIgoKI3VuZGVmIEJHTF9ERUZB VUxUX0JBQ0tfRU5ECiNkZWZpbmUgQkdMX0RFRkFVTFRfQkFDS19FTkQgIm5hdGl2ZSIKCiN1bmRl ZiBCR0xfREVGQVVMVF9BX09VVAojZGVmaW5lIEJHTF9ERUZBVUxUX0FfT1VUICJhLm91dCIKCiN1 bmRlZiBCR0xfREVGQVVMVF9BX0JBVAojZGVmaW5lIEJHTF9ERUZBVUxUX0FfQkFUICJhLm91dCIK CiN1bmRlZiBTVEFDS19HUk9XU19ET1dOCiNkZWZpbmUgU1RBQ0tfR1JPV1NfRE9XTiAxCgojdW5k ZWYgUFRSX0FMSUdOTUVOVAojZGVmaW5lIFBUUl9BTElHTk1FTlQgMgoKI3VuZGVmIFNFVEpNUAoj ZGVmaW5lIFNFVEpNUCBfc2V0am1wCiN1bmRlZiBMT05HSk1QCiNkZWZpbmUgTE9OR0pNUCBfbG9u Z2ptcAoKI3VuZGVmIEhBVkVfQkNPUFkKI2RlZmluZSBIQVZFX0JDT1BZIDEKCiN1bmRlZiBOQl9X SU5ET1dfUkVHSVNURVIKI2RlZmluZSBOQl9XSU5ET1dfUkVHSVNURVIgMAoKI3VuZGVmIEhBVkVf U0lHU0VUTUFTSwojZGVmaW5lIEhBVkVfU0lHU0VUTUFTSyAxCgojdW5kZWYgSEFWRV9TSUdQUk9D TUFTSwojZGVmaW5lIEhBVkVfU0lHUFJPQ01BU0sgMQoKI3VuZGVmIEhBVkVfQUxMT0NBCiNkZWZp bmUgSEFWRV9BTExPQ0EgMQoKI3VuZGVmIEhBVkVfR0VUQ1dECiNkZWZpbmUgSEFWRV9HRVRDV0Qg MQoKI3VuZGVmIEhBVkVfR0VUV0QKI2RlZmluZSBIQVZFX0dFVFdEIDEKCiN1bmRlZiBDT05TVEFO VF9BTElHTkVECiNkZWZpbmUgQ09OU1RBTlRfQUxJR05FRCAxCgojdW5kZWYgQkdMX0JJR19FTkRJ QU4KI2RlZmluZSBCR0xfQklHX0VORElBTiAwCgojdW5kZWYgSEFWRV9QSVBFCiNkZWZpbmUgSEFW RV9QSVBFIDEKCiN1bmRlZiBIQVZFX0xPTkdMT05HCiNkZWZpbmUgSEFWRV9MT05HTE9ORyAxCgoj dW5kZWYgSEFWRV9TSUdDSExECiNkZWZpbmUgSEFWRV9TSUdDSExEIDEKCiN1bmRlZiBIQVZFX1NJ R0FDVElPTgojZGVmaW5lIEhBVkVfU0lHQUNUSU9OIDEKCiN1bmRlZiBCR0xfSEFWRV9TSUdBQ1RJ T04KI2RlZmluZSBCR0xfSEFWRV9TRUxFQ1QgMQoKI3VuZGVmIEhBVkVfVEVSTUlPCiNkZWZpbmUg SEFWRV9URVJNSU8gMQoKI2RlZmluZSBPU19DTEFTUyAidW5peCIKI2RlZmluZSBPU19OQU1FICJM aW51eCIKI2RlZmluZSBPU19BUkNIICJpNjg2IgojZGVmaW5lIE9TX1ZFUlNJT04gIjIuNC44LTI2 bWRrc21wIgojZGVmaW5lIE9TX1RNUCAiL3RtcCIKI2RlZmluZSBGSUxFX1NFUEFSQVRPUiAnLycK I2RlZmluZSBQQVRIX1NFUEFSQVRPUiAnOicKI2RlZmluZSBTVEFUSUNfTElCX1NVRkZJWCAiYSIK I2RlZmluZSBTSEFSRURfTElCX1NVRkZJWCAic28iCiNkZWZpbmUgVUNTMl9ESVNQTEFZQUJMRSAw CgojdW5kZWYgU0hFTEwKI2RlZmluZSBTSEVMTCAiL2Jpbi9zaCIKCiN1bmRlZiBDX0NPTVBJTEVS CiNkZWZpbmUgQ19DT01QSUxFUiAiZ2NjLTMuMC4xIgoKI3VuZGVmIENfRkxBR1MKI2RlZmluZSBD X0ZMQUdTICIiCgojdW5kZWYgQ19PUFRJTV9GTEFHUwojZGVmaW5lIENfT1BUSU1fRkxBR1MgIi1P MyAiCgojdW5kZWYgQ19TVFJJUF9GTEFHUwojZGVmaW5lIENfU1RSSVBfRkxBR1MgIi1zIgoKI3Vu ZGVmIENfUFJPRklMRV9GTEFHUwojZGVmaW5lIENfUFJPRklMRV9GTEFHUyAiLXBnIC1mbm8taW5s aW5lICIKCiN1bmRlZiBMSUJSQVJZX0RJUkVDVE9SWQojZGVmaW5lIExJQlJBUllfRElSRUNUT1JZ ICIvdm13YXJlL3VzZXJzL2JpZ2xvby9sb2NhbC9saWIvYmlnbG9vLzIuNGQiCgojdW5kZWYgWklQ X0RJUkVDVE9SWQojZGVmaW5lIFpJUF9ESVJFQ1RPUlkgIi92bXdhcmUvdXNlcnMvYmlnbG9vL2xv Y2FsL2xpYi9iaWdsb28vMi40ZCIKCiN1bmRlZiBVU0VSX0xJQlJBUklFUwojZGVmaW5lIFVTRVJf TElCUkFSSUVTICItbG0iCgojdW5kZWYgQ19CRUFVVElGSUVSCiNkZWZpbmUgQ19CRUFVVElGSUVS ICIiCgojdW5kZWYgRElSTkFNRV9DTUQKI2RlZmluZSBESVJOQU1FX0NNRCAiZGlybmFtZSIKCiN1 bmRlZiBMSUJSQVJZX0JBU0VfTkFNRQojZGVmaW5lIExJQlJBUllfQkFTRV9OQU1FICJiaWdsb28i CgojdW5kZWYgRE9VQkxFX1BSRUNJU0lPTgojZGVmaW5lIERPVUJMRV9QUkVDSVNJT04gMTQKCiN1 bmRlZiBBRERJVElPTkFMX1NUQVRJQ19MSU5LX09QVElPTgojZGVmaW5lIEFERElUSU9OQUxfU1RB VElDX0xJTktfT1BUSU9OICItV2wsLWRlZnN5bSxfRFlOQU1JQz0wIgoKI3VuZGVmIEFERElUSU9O QUxfU0hBUkVEX0xJTktfT1BUSU9OCiNkZWZpbmUgQURESVRJT05BTF9TSEFSRURfTElOS19PUFRJ T04gIiIKCiN1bmRlZiBIQVZFX1NIQVJFRF9MSUJSQVJZCiNkZWZpbmUgSEFWRV9TSEFSRURfTElC UkFSWSAxCiNkZWZpbmUgSEFWRV9ETE9QRU4gMQojZGVmaW5lIERMT1BFTl9MRF9PUFQgIi1sZGwi CgojdW5kZWYgQkdMX0hFQVBfREVCVUdfQ09QVAojZGVmaW5lIEJHTF9IRUFQX0RFQlVHX0NPUFQg Ii1ES0VFUF9CQUNLX1BUUlMiCgojdW5kZWYgQkdMX0pBVkEKI2RlZmluZSBCR0xfSkFWQSAiamF2 YSIKCiN1bmRlZiBCR0xfSkFWQV9PUFQKI2RlZmluZSBCR0xfSkFWQV9PUFQgIiIKCiN1bmRlZiBC R0xfSkFWQV9WT1BUCiNkZWZpbmUgQkdMX0pBVkFfVk9QVCAiLW5vdmVyaWZ5IgoKI3VuZGVmIEJH TF9KQVZBX1NIRUxMCiNkZWZpbmUgQkdMX0pBVkFfU0hFTEwgInNoIgoKI3VuZGVmIEJHTF9KQVIK I2RlZmluZSBCR0xfSkFSICJqYXIgY21mIgoKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgYmZhbHNl ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSovCiN1bmRlZiAgQkZBTFNFX0FTX0NGQUxTRQojZGVmaW5lIEJG QUxTRV9BU19DRkFMU0UgICAgICAgICAgIDEKI3VuZGVmICBCRkFMU0VfQVNfQ0ZBTFNFCgovKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSovCi8qICAgIGJjb3B5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwojaWYoICFIQVZF X0JDT1BZICkKIyAgIGRlZmluZSBiY29weSggX3NyY18sIF9kc3RfLCBfbGVuXyApIG1lbWNweSgg X2RzdF8sIF9zcmNfLCBfbGVuXyApCiMgICBkZWZpbmUgYnplcm8oIF9kZXN0XywgX2xlbl8gKSAg ICAgICBtZW1zZXQoIF9kZXN0XywgMCwgX2xlbl8gKQojZW5kaWYKCi8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K LyogICAgc2lnc2V0bWFzayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNpZiggIUhBVkVfU0lHU0VUTUFTSyAp CiMgICBpZiggSEFWRV9TSUdQUk9DTUFTSyApCiMgICAgICBkZWZpbmUgc2lnc2V0bWFzayggX2lu dF8gKSAgIFwKICAgICAgICAgICAgICAgICBzaWdwcm9jbWFzayggU0lHX1NFVE1BU0ssIChjb25z dCBzaWdzZXRfdCAqKShfaW50XyksIDBMICkKIyAgIGVsc2UKIyAgICAgIGRlZmluZSBzaWdzZXRt YXNrKCBfaW50XyApCiMgICBlbmRpZgojZW5kaWYKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgZ2V0 Y3dkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNpZiggIUhBVkVfR0VUQ1dEICkKIyAgIGlmKCBIQVZF X0dFVFdEICkKIyAgICAgIGRlZmluZSBnZXRjd2QoIF9wYXRoXywgX2ludF8gKSBnZXR3ZCggX3Bh dGhfICkKIyAgIGVsc2UKIyAgICAgIGRlZmluZSBnZXRjd2QoIF9wYXRoXywgX2ludF8gKSAoKGNo YXIgKilnZXRlbnYoICJQV0QiICkpCiMgICBlbmRpZgojZW5kaWYKCi8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K LyogICAgVGhlIEdjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNkZWZpbmUgTk9fR0MgICAgICAgICAg ICAxCiNkZWZpbmUgQk9FSE1fR0MgICAgICAgICAyCgojZGVmaW5lIEJPRUhNX0dDX1ZFUlNJT04g NAoKLyogdGhlIGRlZmF1bHQgR0MgKi8KI2lmKCAhZGVmaW5lZCggVEhFX0dDICkgKQojICAgZGVm aW5lIFRIRV9HQyBCT0VITV9HQwojZW5kaWYKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgSWwgeSBh IHBsdXNpZXVycyBmb3JtZXMgZCdvYmpldHM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqLwovKiAgICBMZXMgb2JqZXRzIGFsbG91ZWVzOiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICovCi8qICAgICAgICAgICAgKy0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgKi8KLyogICAgICAgICAgICB8Li4u LnNpZ25lZCBmaXhlZCBwb2ludCB2YWx1ZS4uLi4uPz98ICAgICAgICAgICAgICAgICAgICAqLwov KiAgICAgICAgICAgICstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSsgICAgICAg ICAgICAgICAgICAgICovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogICAgTGVzIG9iamV0cyBpbW1lZGlh dHMgMzAgYml0czogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKiAgICAg ICAgICAgICstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSsgICAgICAgICAgICAg ICAgICAgICovCi8qICAgICAgICAgICAgfC4uLi5zaWduZWQgZml4ZWQgcG9pbnQgdmFsdWUuLi4u Lj8/fCAgICAgICAgICAgICAgICAgICAgKi8KLyogICAgICAgICAgICArLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAqLwovKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICovCi8qICAgIExlcyBvYmpldHMgaW1tZWRpYXRzIDYgYml0czogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKi8KLyogICAgICAgICAgICArLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAqLwovKiAgICAgICAgICAgIHwuLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLnx4eHh4eHg/P3wgICAgICAgICAgICAgICAgICAgICovCi8q ICAgICAgICAgICAgKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKyAgICAgICAg ICAgICAgICAgICAgKi8KLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKiAgICBMZXMgb2JqZXRzIGltbWVkaWF0 cyA4IGJpdHM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICAgICAg ICAgICAgKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKyAgICAgICAgICAgICAg ICAgICAgKi8KLyogICAgICAgICAgICB8Li4uLi4uLi4uLi4uLi4uLi58eHh4eHh4eHh8Li4uLi4u Pz98ICAgICAgICAgICAgICAgICAgICAqLwovKiAgICAgICAgICAgICstLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICovCi8qICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ki8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0qLwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBPdSBzb250IGxlcyBg dGFncycgZXQgcXVlbCBgbWFzaycgY2VsYSByZXByZXNlbnRlLiAgICAgICAgICAgICAgICovCi8q LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKi8KI2RlZmluZSBUQUdfU0hJRlQgICAgICAgIFBUUl9BTElHTk1FTlQKI2Rl ZmluZSBBTElHTk1FTlRfVkFMVUUgICgxIDw8IFBUUl9BTElHTk1FTlQpCiNkZWZpbmUgVEFHX01B U0sgICAgICAgICAoQUxJR05NRU5UX1ZBTFVFIC0gMSkKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAg VGhlIHRhZ2dlZCBwb2ludGVycyAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqLwovKiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICovCi8qICAgIFRoZSBmbGFncyBLRUVQX0JBQ0tfUFRS UyBpcyBhIGRlYnVnZ2luZyBHQyBmbGFncyB0aGF0IGlzIG5vdCAgICAgKi8KLyogICAgY29tcGF0 aWJsZSB3aXRoIHBsYWluIGNvbXBpbGF0aW9uIG1vZGUuIEluIHRoYXQgbW9kZSBlYWNoICAgICAg ICAqLwovKiAgICBvYmplY3Qga2VlcHMgaW5mb3JtYXRpb25zIGFib3V0IHdobydzIHBvaW50aW5n IHRvIGl0LiBJdCBpcyAgICAgICovCi8qICAgIHZlcnkgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgYnV0 IGl0IGhhcyBhIHN0cm9uZyBjb25zdHJhaW50OiB3ZSAgICAgKi8KLyogICAgY2Fubm90IHVzZSB0 YWdnaW5nIGFueW1vcmUgZm9yIHR5cGluZyBvYmplY3QuIEVhY2ggb2JqZWN0IG11c3QgICAqLwov KiAgICBoYXZlIGFuIGhlYWRlciBmaWVsZCBob2xkaW5nIHRoZSBvYmpldCB0eXBlLiAgICAgICAg ICAgICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2lmKCBUSEVfR0MgPT0gQk9FSE1fR0Mg KSAKIyAgIGRlZmluZSBUQUdfU1RSVUNUICAgIDAgICAgIC8qICBQb2ludGVycyB0YWdnaW5nICAg ICAgICAgLi4uLjAwICAgICAqLwojICAgZGVmaW5lIFRBR19JTlQgICAgICAgMSAgICAgLyogIElu dGVnZXJzIHRhZ2dpbmcgICAgICAgICAuLi4uMDEgICAgICovCiMgICBkZWZpbmUgVEFHX0NOU1Qg ICAgICAyICAgICAvKiAgQ29uc3RhbnRzIHRhZ2dpbmcgICAgICAgIC4uLi4xMCAgICAgKi8KIyAg IGlmKCAhZGVmaW5lZCggS0VFUF9CQUNLX1BUUlMgKSApCiMgICAgICBkZWZpbmUgVEFHX1BBSVIg ICAzICAgICAvKiAgUGFpcnMgdGFnZ2luZyAgICAgICAgICAgIC4uLi4xMSAgICAgKi8KIyAgIGVu ZGlmCiNlbHNlCiMgICBpZiggVEhFX0dDID09IE5PX0dDICkKIyAgICAgIGRlZmluZSBUQUdfU1RS VUNUIDAgICAgIC8qICBQb2ludGVycyB0YWdnaW5nICAgICAgICAgLi4uLjAwICAgICAqLwojICAg ICAgZGVmaW5lIFRBR19JTlQgICAgMSAgICAgLyogIEludGVnZXJzIHRhZ2dpbmcgICAgICAgICAu Li4uMDEgICAgICovCiMgICAgICBkZWZpbmUgVEFHX0NOU1QgICAyICAgICAvKiAgQ29uc3RhbnRz IHRhZ2dpbmcgICAgICAgIC4uLi4xMCAgICAgKi8KIyAgIGlmKCAhZGVmaW5lZCggS0VFUF9CQUNL X1BUUlMgKSApCiMgICAgICAgICBkZWZpbmUgVEFHX1BBSVIgICAzICAvKiAgUGFpcnMgdGFnZ2lu ZyAgICAgICAgICAgIC4uLi4xMSAgICAgKi8KIyAgIGVuZGlmCiMgICBlbHNlCiAgICAgICAtLT4g ZXJyb3IgIlVua25vd24gZ2FyYmFnZSBjb2xsZWN0b3IgdHlwZSIKIyAgIGVuZGlmCiNlbmRpZgoK LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0qLwovKiAgICAhISEgV0FSTklORyAhISEgV0FSTklORyAhISEgV0FSTklO RyAhISEgV0FSTklORyAhISEgV0FSTklORyAhISEgICovCi8qICAgIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgKi8KLyogICAg SWwgZmF1dCBmYWlyZSB0cmVzIGF0dGVudGlvbiBxdWFuZCBvbiByYWpvdXRlIGRlcyB0YWdzIHBv dXIgZGVzICAqLwovKiAgICBtYWNoaW5lcyBwYXJ0aWN1bGllcmVzLiBFbiBwYXJ0aWN1bGllciwg aWwgZmF1dCBzJ2Fzc3VyZXIgcXVlICAgICovCi8qICAgIGxlcyBmb25jdGlvbnMgYHN0cmluZy0+ b2JqJyBldCBgb2JqLT5zdHJpbmcnIHJlc3RlbnQgY29ycmVjdGVzLiAgKi8KLyogICAgQ2VzIGRl dXggZm9uY3Rpb25zIHV0aWxpc2VudCBsYSByZXByZXNlbnRhdGlvbiBkZXMgb2JqZXRzLiAgICAg ICAqLwovKiAgICBWb2lyIGxlcyBtYWNyb3MgZCdpbnRlcm5lbWVudCBkYW5zIGNlIGZpY2hpZXIg ICAgICAgICAgICAgICAgICAgICovCi8qICAgIChTVFJJTkdfTUFSS19PRkZTRVQsIC4uLikgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoK LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0qLwovKiAgICA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgdXNlIDMgYml0cyBm b3IgdGFnZ2luZy4gV2UgYXJlIHRodXMgYWJsZSAgICovCi8qICAgIHRvIGFkZCBvcHRpbWl6ZWQg Y29uZmlndXJhdGlvbnMgZm9yIHRob3NlIG1hY2hpbmVzOiAgICAgICAgICAgICAgKi8KLyogICAg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSAgICAqLwovKiAgICArLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLSAuLi4gLSstLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLSsgICovCi8qICAgIHwuLi4uLi4uLi4uLi4uLi4uLi5zaWdu ZWQgZml4ZWQgcG9pbnQgdmFsdWUuLi4uLi4uLi4uLi4uLi4gPz8/fCAgKi8KLyogICAgKy0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0gLi4uIC0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0r ICAqLwovKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICovCi8qICAgIExlcyB2ZWN0ZXVyczogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogICAgKy0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tKy0gLi4uIC0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rICAqLwov KiAgICB8Li4uLi4uLi4uLi4uLi4uLi51bnNpZ25lZCBmaXhlZCBwb2ludCB2YWx1ZS4uLi4uLi4u Li4uLi4uID8/P3wgICovCi8qICAgICstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstIC4uLiAt Ky0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKyAgKi8KLyogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSovCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qICAgIExlcyBgdGFncycgc3VyIDMgYml0cy4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0qLwojaWYoIChQVFJfQUxJR05NRU5UID49IDMpICYmICEoZGVmaW5lZCggS0VFUF9CQUNLX1BU UlMgKSkgKQojICAgZGVmaW5lIFRBR19WRUNUT1IgICAgNCAgICAgLyogIFZlY3RvcnMgdGFnZ2lu ZyAgICAgICAgICAuLi4xMDAgICAgICovCiMgICBkZWZpbmUgVEFHX0NFTEwgICAgICA1ICAgICAv KiAgQ2VsbHMgdGFnZ2luZyAgICAgICAgICAgIC4uLjEwMSAgICAgKi8KIyAgIGRlZmluZSBUQUdf UkVBTCAgICAgIDYgICAgIC8qICBSZWFscyB0YWdnaW5nICAgICAgICAgICAgLi4uMTEwICAgICAq LwojICAgZGVmaW5lIFRBR19TVFJJTkcgICAgNyAgICAgLyogIFN0cmluZ3MgdGFnZ2luZyAgICAg ICAgICAuLi4xMTEgICAgICovCiNlbmRpZgoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBIYXNoIHRh YmxlIHNpemVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKi8KI2RlZmluZSBTWU1CT0xfSEFTSF9UQUJMRV9TSVpFX1NISUZU ICAxMgojZGVmaW5lIFNZTUJPTF9IQVNIX1RBQkxFX1NJWkUgICAgICAgICgxIDw8IFNZTUJPTF9I QVNIX1RBQkxFX1NJWkVfU0hJRlQpCgojZGVmaW5lIEtFWVdPUkRfSEFTSF9UQUJMRV9TSVpFX1NI SUZUIDYKI2RlZmluZSBLRVlXT1JEX0hBU0hfVEFCTEVfU0laRSAgICAgICAoMSA8PCBLRVlXT1JE X0hBU0hfVEFCTEVfU0laRV9TSElGVCkKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgSW50ZXJuYWwg QmlnbG9vJ3MgdHlwZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq LwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSovCnR5cGVkZWYgbG9uZyAgICAgICAgICAgaW50X3Q7CnR5cGVkZWYg aW50X3QgICAgICAgICAgaGVhZGVyX3Q7CnR5cGVkZWYgaW50ICAgICAgICAgICAgYm9vbF90Owp0 eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVjczJfdDsKCnR5cGVkZWYgdW5pb24gc2Ntb2JqIHsKICAg aW50X3QgICAgICAgICAgICAgIGludGVnZXI7ICAgLyogIExlcyBlbnRpZXJzICAgICAgICAgICAg ICAgICAgICAgICAqLwogICAKICAgaGVhZGVyX3QgICAgICAgICAgIGhlYWRlcjsgICAgLyogIFVu IGNoYW1wcyB1biBwZXUgZmljdGlmIG1haXMgICAgICAqLwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiAgaWwgZXN0IHV0aWxlIHBvdXIgcG91dm9pciBhY2NlZGVyICovCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBhdSBoZWFkZXIgZGVzIG9iamV0cyBzYW5z IHNhdm9pciAgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIHF1ZWwgZXN0 IGxldXIgdHlwZS4gVG91cyBsZXMgICAgICAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiAgaGVhZGVycyBzb250IGVuIHRldGUgZGVzIHN0cnVjdCAgICovCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qICBvbiBwZXV0IGRvbmMgbGUgaGVhZGVyIGdsb2JhbCAg ICAgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIHBsdXRvdCBxdWUgbGVz IGhlYWRlciBsb2NhdXggICAgICAqLwogICAKICAgc3RydWN0IHBhaXIgeyAgICAgICAgICAgICAg ICAgLyogIExlcyBwYWlycy4gICAgICAgICAgICAgICAgICAgICAgICAqLwojaWYoICEoZGVmaW5l ZCggVEFHX1BBSVIgKSkgKQogICAgICBoZWFkZXJfdCAgICAgICAgaGVhZGVyOyAgICAvKiAgTGUg aGVhZGVyIGVzdCBmYWN1bHRhdGlmLCBpbCAgICAgICovCiNlbmRpZiAgICAgIAogICAgICB1bmlv biBzY21vYmogICAqY2FyOyAgICAgICAvKiAgZGVwZW5kIGR1IEdDIHF1J29uIHV0aWxpc2UuICAg ICAgICovCiAgICAgIHVuaW9uIHNjbW9iaiAgICpjZHI7ICAgICAgIC8qICBEYW5zIHRvdXMgbGVz IGNhcywgaWwgeSBhIGJpZW5zdXIgKi8KICAgfSBwYWlyX3Q7ICAgICAgICAgICAgICAgICAgICAg LyogIHVuIGBjYXInIGV0IHVuIGBjZHInIDotKSAgICAgICAgICAqLwoKICAgc3RydWN0IGV4dGVu ZGVkX3BhaXIgeyAgICAgICAgLyogIExlcyBwYWlycyBldGVuZHVlcy4gICAgICAgICAgICAgICAq LwojaWYoICEoZGVmaW5lZCggVEFHX1BBSVIgKSkgKQogICAgICBoZWFkZXJfdCAgICAgICAgaGVh ZGVyOyAgICAvKiAgTGUgaGVhZGVyIGVzdCBmYWN1bHRhdGlmLCBpbCAgICAgICovCiNlbmRpZiAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBkZXBlbmQgZGUgbCd1dGlsaXNhdGlvbiBkZXMg Yml0cyAgKi8KICAgICAgdW5pb24gc2Ntb2JqICAgKmNhcjsgICAgICAgCiAgICAgIHVuaW9uIHNj bW9iaiAgICpjZHI7CiAgICAgIHVuaW9uIHNjbW9iaiAgICplaGVhZGVyOyAgIC8qICBoZWFkZXIg cG91ciBsYSBtYXJxdWUgYGV4dGVuZGVkJyAgKi8KICAgICAgdW5pb24gc2Ntb2JqICAgKmNlcjsg ICAgICAgLyogIGxlIHNsb3Qgc3VwcGxlbWVudGFpcmUuICAgICAgICAgICAqLwogICB9IGV4dGVu ZGVkX3BhaXJfdDsgICAgICAgICAgICAgICAgICAgICAKCiAgIHN0cnVjdCBzdHJpbmcgeyAgICAg ICAgICAgICAgIC8qICBMZXMgY2hhaW5lcyBkZSBjaGFyLCBqdXN0ZSB1bmUgICAgKi8KI2lmKCAh ZGVmaW5lZCggVEFHX1NUUklORyApICkKICAgICAgaGVhZGVyX3QgICAgICAgIGhlYWRlcjsgICAg LyogIGxvbmd1ZXVyLCBsYSBjaGFpbmUgQyBzdWl0LiAgICAgICAqLwojZW5kaWYJCQogICAgICBp bnQgICAgICAgICAgICAgbGVuZ3RoOwogICAgICB1bnNpZ25lZCBjaGFyICAgY2hhcjA7CiAgIH0g c3RyaW5nX3Q7CgogICBzdHJ1Y3QgdWNzMl9zdHJpbmcgeyAgICAgICAgICAvKiAgVWNzMiBzdHJp bmdzOiAgICAgICAgICAgICAgICAgICAgICovCiAgICAgIGhlYWRlcl90ICAgICAgICBoZWFkZXI7 ICAgIC8qICAgICAtIGEgaGVhZGVyICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgaW50ICAg ICAgICAgICAgIGxlbmd0aDsgICAgLyogICAgIC0gYSBsZW5ndGggICAgICAgICAgICAgICAgICAg ICAqLwogICAgICB1Y3MyX3QgICAgICAgICAgY2hhcjA7ICAgICAvKiAgICAgLSB0aGUgZmlyc3Qg VUNTLTIgY2hhcmFjdGVyICAgICovCiAgIH0gdWNzMl9zdHJpbmdfdDsKCiAgIHN0cnVjdCB2ZWN0 b3IgeyAgICAgICAgICAgICAgIC8qICBMZXMgdmVjdGV1cnMsIHVuIGhlYWRlciBldCB1bmUgICAg Ki8KI2lmKCAhZGVmaW5lZCggVEFHX1ZFQ1RPUiApICkKICAgICAgaGVhZGVyX3QgICAgICAgIGhl YWRlcjsKI2VuZGlmCQkKICAgICAgaW50ICAgICAgICAgICAgIGxlbmd0aDsgICAgLyogIHRhaWxs ZSAoQVRURU5USU9OOiBzdXIgMjQgYml0cywgICAqLwogICAgICB1bmlvbiBzY21vYmogICAqb2Jq MDsgICAgICAvKiAgdm9pciBsYSBtYWNybyB2ZWN0b3ItbGVuZ3RoKS4gICAgICovIAogICB9IHZl Y3Rvcl90OyAgICAgICAgICAgICAKCiAgIHN0cnVjdCB0dmVjdG9yIHsgICAgICAgICAgICAgIC8q ICB0eXBlZCB2ZWN0b3JzICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgaGVhZGVyX3QgICAg ICAgIGhlYWRlcjsgICAgLyogICAtIHRoZSBoZWFkZXIgb2YgdHZlY3RvciAgICAgICAgICAqLwog ICAgICBpbnQgICAgICAgICAgICAgbGVuZ3RoOyAgICAvKiAgIC0gYSBsZW5ndGggICAgICAgICAg ICAgICAgICAgICAgICovCiAgICAgIHVuaW9uIHNjbW9iaiAgICpkZXNjcjsgICAgIC8qICAgLSBh IHR5cGUgZGVzY3JpcHRvciAoc3RhdGljKSAgICAgKi8KICAgfSB0dmVjdG9yX3Q7CgkKICAgc3Ry dWN0IHByb2NlZHVyZSB7ICAgICAgICAgICAgLyogIExlcyBmZXJtZXR1cmVzICAgICAgICAgICAg ICAgICAgICAqLwogICAgICBoZWFkZXJfdCAgICAgICAgaGVhZGVyOyAgICAKICAgICAgdW5pb24g c2Ntb2JqICooKmVudHJ5KSgpOwogICAgICB1bmlvbiBzY21vYmogKigqdmFfZW50cnkpKCk7CiAg ICAgIGludCAgICAgICAgICAgICBhcml0eTsKICAgICAgdW5pb24gc2Ntb2JqICAgKm9iajA7CiAg IH0gcHJvY2VkdXJlX3Q7CgogICBzdHJ1Y3QgcHJvY2VkdXJlX2xpZ2h0IHsgICAgICAvKiAgTGVz IGZlcm1ldHVyZXMgbGVnZXJlcyAgICAgICAgICAgICovCiAgICAgIHVuaW9uIHNjbW9iaiAqKCpl bnRyeSkoKTsKICAgICAgdW5pb24gc2Ntb2JqICAqb2JqMDsKI2lmKCBkZWZpbmVkKCBfX2FscGhh ICkgKQogICAgICBjaGFyIGR1bW15X3RvX3ByZXZlbnRfYnVnX2luX3NlbWFudGlxdWVfd2hlbl9o ZWFwX3NpemVfaXNfNF9tZWdhYnl0ZTsKI2VuZGlmICAgICAgCiAgIH0gcHJvY2VkdXJlX2xpZ2h0 X3Q7CgogICBzdHJ1Y3Qgc3ltYm9sIHsgICAgICAgICAgICAgICAvKiAgU3ltYm9sZXMgJiBrZXl3 b3JkczogICAgICAgICAgICAgICovCiAgICAgIGhlYWRlcl90ICAgICAgICBoZWFkZXI7ICAgIC8q ICAtIGEgdHlwZSBpZGVudGlmaWVyICAgICAgICAgICAgICAgKi8KICAgICAgdW5pb24gc2Ntb2Jq ICAgKnN0cmluZzsgICAgLyogIC0gdGhlIG5hbWUgb2YgdGhlIHN5bWJvbC9rZXl3b3JkICAqLwog ICAgICB1bmlvbiBzY21vYmogICAqY3ZhbDsgICAgICAvKiAgLSBhIHBsaXN0ICAgICAgICAgICAg ICAgICAgICAgICAgICovCiAgIH0gc3ltYm9sX3Q7CgogICBzdHJ1Y3Qgb3V0cHV0X3BvcnQgeyAg ICAgICAgICAvKiAgb3V0cHV0X3BvcnQgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgIGhl YWRlcl90ICAgICAgICBoZWFkZXI7ICAgIC8qICBKdXN0IGEgcG9pbnRlciB0byB0aGUgZmlsZSwg ICAgICAgKi8KICAgICAgRklMRSAgICAgICAgICAgKmZpbGU7ICAgICAgLyogIHRoZSBmaWxlX25h bWUsIGFuZCBhIGtpbmQgb2YgZmlsZSAqLwogICAgICBjaGFyICAgICAgICAgICAqbmFtZTsgICAg ICAvKiAgKGUuZy4gZmlsZSBvciBwaXBlKS4gICAgICAgICAgICAgICovCiAgICAgIHVuaW9uIHNj bW9iaiAgICpraW5kb2Y7ICAgIAogICB9IG91dHB1dF9wb3J0X3Q7CgogICBzdHJ1Y3Qgb3V0cHV0 X3N0cmluZ19wb3J0IHsgICAvKiAgTGVzIG91dHB1dF9zdHJpbmdfcG9ydCAgICAgICAgICAgICov CiAgICAgIGhlYWRlcl90ICAgICAgICBoZWFkZXI7ICAgIC8qICBDZXR0ZSBzdHJ1Y3R1cmUgY29t cG9ydGU6ICAgICAgICAgKi8KICAgICAgY2hhciAgICAgICAgICAgKmJ1ZmZlcjsgICAgLyogIC0g dW4gYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgICBsb25nICAgICAgICAgICAg c2l6ZTsgICAgICAvKiAgLSB1bmUgdGFpbGxlICAgICAgICAgICAgICAgICAgICAgICovCiAgICAg IGxvbmcgICAgICAgICAgICBvZmZzZXQ7ICAgIC8qICAtIHVuIG9mZnNldCAgICAgICAgICAgICAg ICAgICAgICAgKi8KICAgfSBvdXRwdXRfc3RyaW5nX3BvcnRfdDsKCQogICBzdHJ1Y3QgaW5wdXRf cG9ydCB7ICAgICAgICAgICAvKiAgYW4gaW5wdXRfcG9ydCA6ICAgICAgICAgICAgICAgICAgICov CiAgICAgIGhlYWRlcl90ICAgICAgICBoZWFkZXI7ICAgIC8qICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKi8KICAgICAgdW5pb24gc2Ntb2JqICAgKmtpbmRvZjsgICAgLyogICAg LSAoY29uc29sZSwgZmlsZSwgcGlwZSkgICAgICAgICAqLwogICAgICBjaGFyICAgICAgICAgICAq bmFtZTsgICAgICAvKiAgICAtIHRoZSBuYW1lIG9mIGZpbGUgICAgICAgICAgICAgICovCiAgICAg IEZJTEUgICAgICAgICAgICpmaWxlOyAgICAgIC8qICAgIC0gdGhlIHVuZGVybHlpbmcgQyBmaWxl ICAgICAgICAgKi8KICAgICAgbG9uZyAgICAgICAgICAgIGZpbGVwb3M7ICAgLyogICAgLSB0aGUg cG9zaXRpb24gaW4gdGhlIGZpbGUgICAgICAqLwogICAgICBpbnQgICAgICAgICAgICgqc3lzcmVh ZCkoKTsvKiAgICAtIHRoZSBzeXN0ZW0gcmVhZGVyICAgICAgICAgICAgICovCiAgICAgIGludCAg ICAgICAgICAgKCpzeXNlb2YpKCk7IC8qICAgIC0gdGhlIHN5c3RlbSBlb2YgZnVuY3Rpb24gICAg ICAgKi8KICAgICAgbG9uZyAgICAgICAgICAgIGJ1ZnNpejsgICAgLyogICAgLSB0aGUgc2l6ZSBv ZiB0aGUgYnVmZmVyICAgICAgICAqLwogICAgICBib29sX3QgICAgICAgICAgZW9mOyAgICAgICAv KiAgICAtIGhhdmUgd2Ugc2VlbiBhbiBlbmQtb2YtZmlsZSAgICovCiAgICAgIGxvbmcgICAgICAg ICAgICBtYXRjaHN0YXJ0Oy8qICAgIC0gdGhlIHN0YXJ0IG9mIGEgbWF0Y2ggcG9zaXRpb24gKi8K ICAgICAgbG9uZyAgICAgICAgICAgIG1hdGNoc3RvcDsgLyogICAgLSB0aGUgZW5kIG9mIHRoZSBt YXRjaCAgICAgICAgICAqLwogICAgICBsb25nICAgICAgICAgICAgZm9yd2FyZDsgICAvKiAgICAt IHRoZSBwb3NpdGlvbiBvZiBSRUFELUNIQVIgICAgICovCiAgICAgIGxvbmcgICAgICAgICAgICBh YnVmc2l6OyAgIC8qICAgIC0gdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBidWZmZXIgKi8KICAgICAg dW5zaWduZWQgY2hhciAgKmJ1ZmZlcjsgICAgLyogICAgLSB0aGUgcG9ydCBidWZmZXIgICAgICAg ICAgICAgICAqLwogICAgICBpbnQgICAgICAgICAgICAgbGFzdGNoYXI7ICAvKiAgICAtIHRoZSBs YXN0IGNoYXIgYmVmb3JlIGEgZmlsbCAgICovCiAgIH0gaW5wdXRfcG9ydF90OwogICAgICAKICAg c3RydWN0IGJpbmFyeV9wb3J0IHsgICAgICAgICAgLyogIExlcyBiaW5hcnlfcG9ydCAgICAgICAg ICAgICAgICAgICAqLwogICAgICBoZWFkZXJfdCAgICAgICAgaGVhZGVyOyAgICAvKiAgY2VzIHBv cnRzIHNvbnQgY29uc3RpdHVlcyBkZTogICAgICovCiAgICAgIGNoYXIgICAgICAgICAgICpuYW1l OyAgICAgIC8qICAgIC0gdW4gbm9tIGRlIGZpY2hpZXIgICAgICAgICAgICAgKi8KICAgICAgRklM RSAgICAgICAgICAgKmZpbGU7ICAgICAgLyogICAgLSB1biBwb2ludGV1ciBzdXIgdW4gZmljaGll ciAgICAqLwogICAgICBib29sX3QgICAgICAgICAgICBpbzsgICAgICAvKiAgICAtIDAgZW4gZW50 cmVlIDEgZW4gc29ydGllICAgICAgICovCiAgIH0gYmluYXJ5X3BvcnRfdDsKCQojaWYoICFkZWZp bmVkKCBUQUdfQ0VMTCApICkKICAgc3RydWN0IGNlbGwgeyAgICAgICAgICAgICAgICAgLyogIExl cyBjZWxsdWxlcy4gQ2VzIG9iamV0cyBzb250ICAgICAqLwogICAgICBoZWFkZXJfdCAgICAgICAg aGVhZGVyOyAgICAvKiAgdXRpbGlzZWVzIHF1YW5kIGlsIHkgYSBkZXMgdmFyICAgICovCiAgICAg IHVuaW9uIHNjbW9iaiAgICp2YWw7ICAgICAgICAKICAgfSBjZWxsX3Q7CiNlbmRpZgkJCgogICBz dHJ1Y3Qgc3RydWN0dXJlIHsgICAgICAgICAgICAvKiAgTGVzIHN0cnVjdHVyZXMsICAgICAgICAg ICAgICAgICAgICovCiNpZiggIWRlZmluZWQoIFRBR19TVFJVQ1RVUkUgKSApCiAgICAgIGhlYWRl cl90ICAgICAgICBoZWFkZXI7ICAgIC8qICBzb250IGNvbnN0aXR1ZWVzIGRlIDogICAgICAgICAg ICAgKi8KI2VuZGlmCQkKICAgICAgdW5pb24gc2Ntb2JqICAgKmtleTsgICAgICAgLyogICAgICAg ICAgICAgICAgICAgICAgLSB1bmUgY2xlICAgICAqLwogICAgICBpbnQgICAgICAgICAgICAgbGVu Z3RoOyAgICAvKiAgICAgICAgICAgICAgICAgICAgICAtIHVuZSBsb25nLiAgICovCiAgICAgIHVu aW9uIHNjbW9iaiAgICpvYmowOwogICB9IHN0cnVjdF90OwoKICAgc3RydWN0IHJlYWwgeyAgICAg ICAgICAgICAgICAgLyogIExlcyBub21icmVzIGZsb3R0YW50cyAgICAgICAgICAgICAqLwojaWYo ICFkZWZpbmVkKCBUQUdfUkVBTCApICkKICAgICAgaGVhZGVyX3QgICAgICAgIGhlYWRlcjsgICAg LyogIGNlIGNoYW1wcyBlc3QganVzdGUgdXRpbGUgcG91ciAgICAqLwojZW5kaWYJCQogICAgICBk b3VibGUgICAgICAgICAgcmVhbDsgICAgICAKICAgfSByZWFsX3Q7ICAgICAgICAgICAgICAgICAg ICAgCgogICBzdHJ1Y3Qgc3RhY2sgeyAgICAgICAgICAgICAgICAvKiAgTGVzIHBpbGVzIGRlIGBj YWxsL2NjJyAgICAgICAgICAgICovCiAgICAgIGhlYWRlcl90ICAgICAgICBoZWFkZXI7ICAgIC8q ICBzb250OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgdW5pb24gc2Ntb2Jq ICAgKnNlbGY7ICAgICAgLyogICAgICAgIC0gdW4gcHRyIHN1ciBzb2l0IG1lbWUgICAgICAqLwog ICAgICB1bmlvbiBzY21vYmogICAqZXhpdGRfdG9wOyAvKiAgICAgICAgLSB1biBwdHIgc3VyIGxl cyBleGl0cyAgICAgICovCiAgICAgIHVuaW9uIHNjbW9iaiAgICpzdGFtcDsgICAgIC8qICAgICAg ICAtIGFuIGV4aXRkIHN0YW1wICAgICAgICAgICAgKi8KICAgICAgbG9uZyAgICAgICAgICAgIHNp emU7ICAgICAgLyogICAgICAgIC0gdW5lIHRhaWxsZSAgICAgICAgICAgICAgICAqLwogICAgICBz dHJ1Y3QgYmVmb3JlZCAqYmVmb3JlX3RvcDsvKiAgICAgICAgLSB1biBwdHIgc3VyIGxlcyBiZWZv cmVzICAgICovCiAgICAgIGNoYXIgICAgICAgICAgICpzdGFja190b3A7IC8qICAgICAgICAtIHRo ZSB0b3Agb2YgdGhlIHN0YWNrICAgICAgKi8KICAgICAgY2hhciAgICAgICAgICAgKnN0YWNrX2Jv dDsgLyogICAgICAgIC0gdGhlIGJvdHRvbSBvZiB0aGUgc3RhY2sgICAqLwogICAgICBzdHJ1Y3Qg ZGZyYW1lICAqdG9wX2ZyYW1lOyAvKiAgICAgICAgLSB0aGUgaGVhZCBvZiB0aGUgdHJhY2VzICAg ICovCiAgICAgIHZvaWQgICAgICAgICAgICpzdGFjazsgICAgIC8qICAgICAgICAtIHVuIGVzcGFj ZSBtZW1vaXJlICAgICAgICAgKi8KICAgfSBzdGFja190OwoKICAgc3RydWN0IGZvcmVpZ24geyAg ICAgICAgICAgICAgLyogIExlcyB0eXBlcyBldHJhbmdlcnMgICAgICAgICAgICAgICAqLwogICAg ICBoZWFkZXJfdCAgICAgICAgaGVhZGVyOyAgICAKICAgICAgdW5pb24gc2Ntb2JqICAgKmlkOwog ICAgICB2b2lkICAgICAgICAgICAqY29iajsKICAgfSBmb3JlaWduX3Q7CgogICBzdHJ1Y3QgZWxv bmcgeyAgICAgICAgICAgICAgICAvKiAgVGhlIGBleGFjdCBsb25nJyAob3IgZnVsbCBsb25nKSAg ICovCiAgICAgIGhlYWRlcl90ICAgICAgICBoZWFkZXI7CiAgICAgIGxvbmcgICAgICAgICAgICBl bG9uZzsKICAgfSBlbG9uZ190OwoKICAgc3RydWN0IGxsb25nIHsgICAgICAgICAgICAgICAgLyog dGhlIGxvbmcgbG9uZyBCaWdsb28gb2JqZWN0cyAgICAgICAqLwogICAgICBoZWFkZXJfdCAgICAg ICAgaGVhZGVyOwojaWYoIEhBVkVfTE9OR0xPTkcgKSAgICAgIAogICAgICBsb25nIGxvbmcgICAg ICAgbGxvbmc7CiNlbHNlCiAgICAgIGxvbmcgICAgICAgICAgICBsbG9uZzsKI2VuZGlmICAgICAg CiAgIH0gbGxvbmdfdDsKCiAgIHN0cnVjdCBwcm9jZXNzIHsgICAgICAgICAgICAgIC8qIEZpcnN0 IGNsYXNzIHByb2Nlc3NlczogICAgICAgICAgICAgKi8KICAgICAgaGVhZGVyX3QgICAgICBoZWFk ZXI7ICAgICAgLyogICAtIGEgaGVhZGVyIGZvciB0eXBlIGNoZWNraW5nICAgICAqLwogICAgICBp bnQgICAgICAgICAgIHBpZDsgICAgICAgICAvKiAgIC0gdGhlIHByb2Nlc3MgaWQgICAgICAgICAg ICAgICAgICovCiAgICAgIGludCAgICAgICAgICAgaW5kZXg7ICAgICAgIC8qICAgLSBwcm9jZXNz IGluZGV4IChzZWUgcHJvY190YWJsZSkgKi8KICAgICAgdW5pb24gc2Ntb2JqICpzdHJlYW1bIDMg XTsgLyogICAtIG91dCwgaW4gYW5kIGVyciBzdHJlYW1zICAgICAgICAqLwogICAgICBpbnQgICAg ICAgICAgIGV4aXRlZDsgICAgICAvKiAgIC0gcHJvY2VzcyBpcyBjb21wbGV0ZWQgICAgICAgICAg ICovCiAgICAgIGludCAgICAgICAgICAgZXhpdF9zdGF0dXM7IC8qICAgLSB0aGUgZXhpdCBzdGF0 dXMgb2YgdGhlIHByb2Nlc3MgKi8KICAgfSBwcm9jZXNzX3Q7CgogICBzdHJ1Y3Qgc29ja2V0IHsg ICAgICAgICAgICAgICAvKiBGaXJzdCBjbGFzcyBzb2NrZXRzOiAgICAgICAgICAgICAgICovCiAg ICAgIGhlYWRlcl90ICAgICAgaGVhZGVyOyAgICAgIC8qICAgLSBhIGhlYWRlciBmb3IgdHlwZSBj aGVja2luZyAgICAgKi8KICAgICAgaW50ICAgICAgICAgICBwb3J0bnVtOyAgICAgLyogICAtIGEg cG9ydCBudW1iZXIgICAgICAgICAgICAgICAgICAqLwogICAgICB1bmlvbiBzY21vYmogKmhvc3Ru YW1lOyAgICAvKiAgIC0gYSBob3N0IG5hbWUgICAgICAgICAgICAgICAgICAgICovCiAgICAgIHVu aW9uIHNjbW9iaiAqaG9zdGlwOyAgICAgIC8qICAgLSBhIGhvc3QgaXAgICAgICAgICAgICAgICAg ICAgICAgKi8KICAgICAgaW50ICAgICAgICAgICBmZDsgICAgICAgICAgLyogICAtIGEgZmlsZSBk ZXNjcmlwdG9yICAgICAgICAgICAgICAqLwogICAgICB1bmlvbiBzY21vYmogKmlucHV0OyAgICAg ICAvKiAgIC0gYSBzY2hlbWUgaW5wdXQgcG9ydCBvciAjdW5zcGVjICovCiAgICAgIHVuaW9uIHNj bW9iaiAqb3V0cHV0OyAgICAgIC8qICAgLSBhIHNjaGVtZSBvdXRwdXQgcG9ydCBvciAjdW5zcGVj Ki8KICAgfSBzb2NrZXRfdDsKCiAgIHN0cnVjdCBjdXN0b20geyAgICAgICAgICAgICAgIC8qIEN1 c3RvbSBvYmplY3RzICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgaGVhZGVyX3QgICAgICBo ZWFkZXI7ICAgICAgLyogICAtIGEgaGVhZGVyIGZvciB0eXBlIGNoZWNraW5nICAgICAqLwogICAg ICBjaGFyICAgICAgICAgKmlkZW50aWZpZXI7ICAvKiAgIC0gYSBpZGVudGlmaWVyICAgICAgICAg ICAgICAgICAgICovCiAgICAgIGludCAgICAgICAgICAgKCpmaW5hbCkoKTsgIC8qICAgLSBhIGZp bmFsaXphdGlvbiBmdW5jdGlvbiAgICAgICAgKi8KICAgICAgaW50ICAgICAgICAgICAoKmVxdWFs KSgpOyAgLyogICAtIGFuIGVxdWFsaXR5IGZ1bmN0aW9uICAgICAgICAgICAqLwogICAgICBsb25n ICAgICAgICAgICgqaGFzaCkoKTsgICAvKiAgIC0gYSBoYXNoIGZ1bmN0aW9uICAgICAgICAgICAg ICAgICovCiAgICAgIGNoYXIgICAgICAgICAqKCp0b19zdHJpbmcpKCk7LyogLSBhbiBzdHJpbmcg Y29udmVyc3RlciAgICAgICAgICAgKi8KICAgICAgdW5pb24gc2Ntb2JqICooKm91dHB1dCkoKTsg LyogICAtIGFuIG91dHB1dCBmdW5jdGlvbiAgICAgICAgICAgICAqLwogICB9IGN1c3RvbV90Owp9 ICpvYmpfdDsKCnR5cGVkZWYgb2JqX3QgKCpmdW5jdGlvbl90KSgpOwoKLyogb2xkIG5hbWUgbWFu Z2xpbmcgZnJhbWV3b3JrICovCnR5cGVkZWYgc3RydWN0IF9fb2JqZWN0X2JnbCB7CiAgIGhlYWRl cl90IGhlYWRlcjsKICAgb2JqX3Qgd2lkZW5pbmc7Cn0gKm9iamVjdF9iZ2x0OwoKLyogYm9vdHN0 cmFwIGNvbmZpZ3VyYXRpb24gKi8gICAKdHlwZWRlZiBzdHJ1Y3QgX19iZ2xfX29iamVjdF8wMF9i Z2wgewogICBoZWFkZXJfdCBoZWFkZXI7CiAgIG9ial90IHdpZGVuaW5nOwp9ICpiZ2xfX29iamVj dF8wMF9iZ2x0OwogICAKLyogbmV3IG5hbWUgbWFuZ2xpbmcgZnJhbWV3b3JrICovICAgCnR5cGVk ZWYgc3RydWN0IEJnTF9fb2JqZWN0XzAwX2JnbCB7CiAgIGhlYWRlcl90IGhlYWRlcjsKICAgb2Jq X3Qgd2lkZW5pbmc7Cn0gKkJnTF9fb2JqZWN0XzAwX2JnbHQ7CnR5cGVkZWYgc3RydWN0IEJnTF9v YmplY3R6MDBfYmdsIHsKICAgaGVhZGVyX3QgaGVhZGVyOwogICBvYmpfdCB3aWRlbmluZzsKfSAq QmdMX29iamVjdHowMF9iZ2x0OwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBUeXBlIGlkZW50aWZp ZXJzIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8q LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKi8KI2RlZmluZSBQQUlSX1RZUEUgICAgICAgICAgICAgICAgICAwCiNkZWZp bmUgU1RSSU5HX1RZUEUgICAgICAgICAgICAgICAgMQojZGVmaW5lIFZFQ1RPUl9UWVBFICAgICAg ICAgICAgICAgIDIKI2RlZmluZSBQUk9DRURVUkVfVFlQRSAgICAgICAgICAgICAzCiNkZWZpbmUg VUNTMl9TVFJJTkdfVFlQRSAgICAgICAgICAgNAojZGVmaW5lIE9QQVFVRV9UWVBFICAgICAgICAg ICAgICAgIDUKI2RlZmluZSBDVVNUT01fVFlQRSAgICAgICAgICAgICAgICA2CiNkZWZpbmUgS0VZ V09SRF9UWVBFICAgICAgICAgICAgICAgNwojZGVmaW5lIFNZTUJPTF9UWVBFICAgICAgICAgICAg ICAgIDgKI2RlZmluZSBTVEFDS19UWVBFICAgICAgICAgICAgICAgICA5CiNkZWZpbmUgSU5QVVRf UE9SVF9UWVBFICAgICAgICAgICAgMTAKI2RlZmluZSBPVVRQVVRfUE9SVF9UWVBFICAgICAgICAg ICAxMQovKiAjZGVmaW5lIFJHUkFNTUFSX1RZUEUgICAgICAgICAgICAgIDEyICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICovCiNkZWZpbmUgQ0VMTF9UWVBFICAgICAgICAgICAgICAgICAg MTMKI2RlZmluZSBTT0NLRVRfVFlQRSAgICAgICAgICAgICAgICAxNAojZGVmaW5lIFNUUlVDVF9U WVBFICAgICAgICAgICAgICAgIDE1CiNkZWZpbmUgUkVBTF9UWVBFICAgICAgICAgICAgICAgICAg MTYKI2RlZmluZSBQUk9DRVNTX1RZUEUgICAgICAgICAgICAgICAxNwojZGVmaW5lIEZPUkVJR05f VFlQRSAgICAgICAgICAgICAgIDE4CiNkZWZpbmUgT1VUUFVUX1NUUklOR19QT1JUX1RZUEUgICAg MTkKI2RlZmluZSBCSU5BUllfUE9SVF9UWVBFICAgICAgICAgICAyMAojZGVmaW5lIEVYVEVOREVE X1BBSVJfVFlQRSAgICAgICAgIDIxCiNkZWZpbmUgVFZFQ1RPUl9UWVBFICAgICAgICAgICAgICAg MjIKI2RlZmluZSBUU1RSVUNUX1RZUEUgICAgICAgICAgICAgICAyMwojZGVmaW5lIFBST0NFRFVS RV9MSUdIVF9UWVBFICAgICAgIDI0CiNkZWZpbmUgRUxPTkdfVFlQRSAgICAgICAgICAgICAgICAg MjUKI2RlZmluZSBMTE9OR19UWVBFICAgICAgICAgICAgICAgICAyNgovKiBPQkpFQ1QgbXVzdCBi ZSB0aGUgbGFzdCBkZWZpbmVkIHR5cGUgYmVjYXVzZSBuZXcgY2xhc3NlcyAgICovCi8qIHdpbGwg YmUgYWxsb2NhdGVkIFRZUEUgbnVtYmVyIHN0YXJ0aW5nIGF0IE9CSkVDVF9UWVBFICsgMS4gKi8K I2RlZmluZSBPQkpFQ1RfVFlQRSAgICAgICAgICAgICAgICAyNyAKCi8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K LyogICAgTGVzIHByb2NlZHVyZXMgZCdhbGxvY2F0aW9ucyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNpZiggVEhFX0dDID09IERFTEFDT1VS X0dDICkKIyAgIGRlZmluZSBHQ19NQUxMT0MoIHNpemUgKQojICAgZGVmaW5lIEdDX01BTExPQ19B VE9NSUMoIHNpemUgKQojICAgZGVmaW5lIElOSVRfQUxMT0NBVElPTigpIDEKIyAgIGRlZmluZSBG UkVFX0FMTE9DQVRJT04oKSAxCiNlbHNlCiMgICBpZiggVEhFX0dDID09IEJPRUhNX0dDICkKIyAg ICAgIGlmKCAhZGVmaW5lZCggR0NfUFJJVkFURV9IICkgKQogICAgICAgICAgZXh0ZXJuIG9ial90 IEdDX21hbGxvYygpOwogICAgICAgICAgZXh0ZXJuIG9ial90IEdDX21hbGxvY19hdG9taWMoKTsK ICAgICAgICAgIGV4dGVybiBvYmpfdCBHQ19kZWJ1Z19tYWxsb2MoKTsKICAgICAgICAgIGV4dGVy biBvYmpfdCBHQ19kZWJ1Z19tYWxsb2NfYXRvbWljKCk7CiAgICAgICAgICBleHRlcm4gaW50IEdD X2djX25vOwogICAgICAgICAgZXh0ZXJuIGludCBHQ19zaXplKCk7CiAgICAgICAgICBleHRlcm4g dm9pZCBHQ19pbml0KCk7CiAgICAgICAgICBleHRlcm4gdm9pZCBHQ19leHBhbmRfaHAoIGxvbmcg KTsKICAgICAgICAgIGV4dGVybiB2b2lkIEdDX3JlZ2lzdGVyX2Rpc3BsYWNlbWVudCggaW50ICk7 CiAgICAgICAgICBleHRlcm4gb2JqX3QgR0NfZGVidWdfbWFsbG9jKCk7CiAgICAgICAgICBleHRl cm4gb2JqX3QgR0NfZGVidWdfbWFsbG9jX2F0b21pYygpOwogICAgICAgICAgZXh0ZXJuIHZvaWQg R0NfZGVidWdfcmVnaXN0ZXJfZGlzcGxhY2VtZW50KCBpbnQgKTsKIyAgICAgIGlmKCBkZWZpbmVk KCBQUk9GSUxFICkgKQogICAgICAgICAgZXh0ZXJuIHZvaWQgR0NfcHJvZmlsZV9zdGFydCgpOwoj ICAgICAgZW5kaWYKIyAgICAgIGVuZGlmCiMgICAgICB1bmRlZiBHQ19NQUxMT0MKIyAgICAgIHVu ZGVmIEdDX01BTExPQ19BVE9NSUMKIyAgICAgIGlmKCBkZWZpbmVkKCBLRUVQX0JBQ0tfUFRSUyAp ICkKLyogVGhlIGNhc3RzIGZyb20gb2JqX3QgdG8gY2hhciAqIGluIHRoaXMgdHdvIG1hY3JvcyBh cmUgbm90IGRhbmdlcm91cy4gKi8KLyogVGhlIGRlYnVnIG1hbGxvYyBtYWNoaW5lcnkgZG9lcyBu b3QgcmVseSBvbiB0aGF0IHRoZSBzeW1ib2wgcG9pbnRlZCAgKi8KLyogdG8gYnkgdG9wX29mX2Zy YW1lIGFyZSBoZWxkIGJ5IHRoZSBhbGxvY2F0ZWQgb2JqZWN0LiBCZWNhdXNlIHRoZXNlICAgKi8K LyogYXJlIHN5bWJvbHMsIHRoZXkgd29uJ3QgYmUgY29sbGVjdGVkIGJlY2F1c2UgdGhleSBhcmUg cG9pbnRlZCB0byBieSAgKi8KLyogdGhlIHN5bWJvbCB0YWJsZS4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8gICAKIyAgICAgICAgIGRlZmluZSBH Q19NQUxMT0MoIHNpemUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CiAgICAgICAgICAgICAob2JqX3QpR0NfZGVidWdfbWFsbG9jKCBzaXplLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNoYXIgKil0b3Bfb2ZfZnJhbWUtPnN5bWJvbCwgICAgICAgIFwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChHQ19nY19ubzw8MTYpICkKIyAgICAgICAgIGRlZmluZSBHQ19N QUxMT0NfQVRPTUlDKCBzaXplICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg ICAgICAgICAgICAob2JqX3QpR0NfZGVidWdfbWFsbG9jX2F0b21pYyggc2l6ZSwgICAgICAgICAg ICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChjaGFyICopdG9wX29mX2ZyYW1lLT5zeW1ib2wsIFwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoR0NfZ2Nfbm88PDE2KSApCiMgICAgICBlbHNlCiMgICAg ICAgICBpZiggZGVmaW5lZCggQklHTE9PX0dDX01BTExPQ19QUk9GSUxFICkgKQogICAgICAgICAg ICBleHRlcm4gdm9pZCBHQ19wcm9maWxlX2FsbG9jKCBzaXplX3QsIGNoYXIgKiwgaW50ICk7CiAg ICAgICAgICAgIGV4dGVybiB2b2lkICpHQ19wcm9maWxlX21hbGxvYyggc2l6ZV90LCBjaGFyICos IGludCApOwogICAgICAgICAgICBleHRlcm4gdm9pZCAqR0NfcHJvZmlsZV9tYWxsb2NfYXRvbWlj KCBzaXplX3QsIGNoYXIgKiwgaW50ICk7CiMgICAgICAgICAgIGRlZmluZSBHQ19NQUxMT0MoIHNp emUgKSBcCiAgICAgICAgICAgICAgICAgKChvYmpfdClHQ19wcm9maWxlX21hbGxvYyggc2l6ZSwg X19GSUxFX18sIF9fTElORV9fICkpCiMgICAgICAgICAgIGRlZmluZSBHQ19NQUxMT0NfQVRPTUlD KCBzaXplICkgXAogICAgICAgICAgICAgICAgICgob2JqX3QpR0NfcHJvZmlsZV9tYWxsb2NfYXRv bWljKCBzaXplLCBfX0ZJTEVfXywgX19MSU5FX18gKSkKIyAgICAgICAgIGVsc2UKIyAgICAgICAg ICAgZGVmaW5lIEdDX01BTExPQyggc2l6ZSApIChvYmpfdClHQ19tYWxsb2MoIHNpemUgKQojICAg ICAgICAgICBkZWZpbmUgR0NfTUFMTE9DX0FUT01JQyggc2l6ZSApIChvYmpfdClHQ19tYWxsb2Nf YXRvbWljKCBzaXplICkKIyAgICAgICAgIGVuZGlmCiMgICAgICBlbmRpZgojICAgICAgZGVmaW5l IEdDX0NPTExFQ1QoKSBHQ19nY29sbGVjdCgpCgovKiAgQSBzdXBwcmltZXIgZGVzIHF1ZSBCb2Vo bSBhdXJhIGNvcnJpZ2UgR0NfcmVnaXN0ZXJfZGlzcGxhY2VtZW50ICovCi8qICBkYW5zIHNvbiBH Qy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8K IyAgICAgIGlmKCAhZGVmaW5lZCggR0NfUkVHSVNURVJfRElTUExBQ0VNRU5UICkgKQojICAgICAg ICAgaWYoIGRlZmluZWQoIEdDX0RFQlVHICkgfHwgZGVmaW5lZCggS0VFUF9CQUNLX1BUUlMgKSAp CiMgICAgICAgICAgICBkZWZpbmUgR0NfUkVHSVNURVJfRElTUExBQ0VNRU5UKCBvICkgR0NfZGVi dWdfcmVnaXN0ZXJfZGlzcGxhY2VtZW50KCBvICkKIyAgICAgICAgIGVsc2UKIyAgICAgICAgICAg IGRlZmluZSBHQ19SRUdJU1RFUl9ESVNQTEFDRU1FTlQoIG8gKSBHQ19yZWdpc3Rlcl9kaXNwbGFj ZW1lbnQoIG8gKQojICAgICAgICAgZW5kaWYKIyAgICAgIGVuZGlmCgojICAgICAgaWYoIGRlZmlu ZWQoIFRBR19TVFJVQ1QgKSAmJiAoIFRBR19TVFJVQ1QgIT0gMCkgKQojICAgICAgICAgZGVmaW5l IFNUUlVDVF9ESVNQTEFDRU1FTlQoKSBHQ19SRUdJU1RFUl9ESVNQTEFDRU1FTlQoIFRBR19TVFJV Q1QgKSAKIyAgICAgIGVsc2UKIyAgICAgICAgIGRlZmluZSBTVFJVQ1RfRElTUExBQ0VNRU5UKCkg MAojICAgICAgZW5kaWYKIyAgICAgIGlmKCBkZWZpbmVkKCBUQUdfUEFJUiApICYmICggVEFHX1BB SVIgIT0gMCkgKQojICAgICAgICAgZGVmaW5lIFBBSVJfRElTUExBQ0VNRU5UKCkgR0NfUkVHSVNU RVJfRElTUExBQ0VNRU5UKCBUQUdfUEFJUiApIAojICAgICAgZWxzZQojICAgICAgICAgZGVmaW5l IFBBSVJfRElTUExBQ0VNRU5UKCkgMAojICAgICAgZW5kaWYKIyAgICAgIGlmKCBkZWZpbmVkKCBU QUdfVkVDVE9SICkgJiYgKCBUQUdfVkVDVE9SICE9IDApICkKIyAgICAgICAgIGRlZmluZSBWRUNU T1JfRElTUExBQ0VNRU5UKCkgR0NfUkVHSVNURVJfRElTUExBQ0VNRU5UKCBUQUdfVkVDVE9SICkg CiMgICAgICBlbHNlCiMgICAgICAgICBkZWZpbmUgVkVDVE9SX0RJU1BMQUNFTUVOVCgpIDAKIyAg ICAgIGVuZGlmCiMgICAgICBpZiggZGVmaW5lZCggVEFHX0NFTEwgKSAmJiAoIFRBR19DRUxMICE9 IDApICkKIyAgICAgICAgIGRlZmluZSBDRUxMX0RJU1BMQUNFTUVOVCgpIEdDX1JFR0lTVEVSX0RJ U1BMQUNFTUVOVCggVEFHX0NFTEwgKSAKIyAgICAgIGVsc2UKIyAgICAgICAgIGRlZmluZSBDRUxM X0RJU1BMQUNFTUVOVCgpIDAKIyAgICAgIGVuZGlmCiMgICAgICBpZiggZGVmaW5lZCggVEFHX1NU UlVDVFVSRSApICYmICggVEFHX1NUUlVDVFVSRSAhPSAwKSApCiMgICAgICAgICBkZWZpbmUgU1RS VUNUVVJFX0RJU1BMQUNFTUVOVCgpIFwKICAgICAgICAgICAgIEdDX1JFR0lTVEVSX0RJU1BMQUNF TUVOVCggVEFHX1NUUlVDVFVSRSApIAojICAgICAgZWxzZQojICAgICAgICAgZGVmaW5lIFNUUlVD VFVSRV9ESVNQTEFDRU1FTlQoKSAwCiMgICAgICBlbmRpZgojICAgICAgaWYoIGRlZmluZWQoIFRB R19TVFJJTkcgKSAmJiAoIFRBR19TVFJJTkcgIT0gMCkgKQojICAgICAgICAgZGVmaW5lIFNUUklO R19ESVNQTEFDRU1FTlQoKSBHQ19SRUdJU1RFUl9ESVNQTEFDRU1FTlQoIFRBR19TVFJJTkcgKSAK IyAgICAgIGVsc2UKIyAgICAgICAgIGRlZmluZSBTVFJJTkdfRElTUExBQ0VNRU5UKCkgMAojICAg ICAgZW5kaWYKIyAgICAgIGlmKCBkZWZpbmVkKCBUQUdfUkVBTCApICYmICggVEFHX1JFQUwgIT0g MCkgKQojICAgICAgICAgZGVmaW5lIFJFQUxfRElTUExBQ0VNRU5UKCkgR0NfUkVHSVNURVJfRElT UExBQ0VNRU5UKCBUQUdfUkVBTCApIAojICAgICAgZWxzZQojICAgICAgICAgZGVmaW5lIFJFQUxf RElTUExBQ0VNRU5UKCkgMAojICAgICAgZW5kaWYKCiMgICAgICBkZWZpbmUgSU5JVF9BTExPQ0FU SU9OKCBzaXplICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgKCBH Q19pbml0KCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK ICAgICAgICAgICAgR0NfZXhwYW5kX2hwKCBzaXplICksICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCiAgIAkgICAgU1RSVUNUX0RJU1BMQUNFTUVOVCgpLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCiAgICAgIAkgICAgUEFJUl9ESVNQTEFDRU1FTlQoKSwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIAkgICAgVkVDVE9SX0RJU1BM QUNFTUVOVCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIAkgICAgQ0VM TF9ESVNQTEFDRU1FTlQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg IAkgICAgU1RSVUNUVVJFX0RJU1BMQUNFTUVOVCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCiAgIAkgICAgU1RSSU5HX0RJU1BMQUNFTUVOVCgpLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCiAgIAkgICAgUkVBTF9ESVNQTEFDRU1FTlQoKSwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgIDEgKQoKIyAgICAgIGRlZmluZSBG UkVFX0FMTE9DQVRJT04oKTsKIyAgIGVsc2UKIyAgICAgIGlmKCBUSEVfR0MgPT0gTk9fR0MgKQog ICAgICAgICAgZXh0ZXJuIG9ial90IGhlYXBfYWxsb2MoKTsKIyAgICAgICAgIGRlZmluZSBHQ19N QUxMT0MoIHNpemUgKSBoZWFwX2FsbG9jKCBzaXplICkKIyAgICAgICAgIGRlZmluZSBHQ19NQUxM T0NfQVRPTUlDKCBzaXplICkgR0NfTUFMTE9DKCBzaXplICkKIyAgICAgICAgIGRlZmluZSBJTklU X0FMTE9DQVRJT04oIHNpemUgKSBpbml0X2hlYXAoIHNpemUgKQojICAgICAgICAgZGVmaW5lIEZS RUVfQUxMT0NBVElPTigpIGZyZWVfaGVhcCgpCiMgICAgICAgICBkZWZpbmUgR0NfQ09MTEVDVCgp IAojICAgICAgZWxzZQogICAgICAgICAgLS0+IGVycm9yICJVbmtub3duIGdhcmJhZ2UgY29sbGVj dG9yIHR5cGUiCiMgICAgICBlbmRpZiAgICAgICAgICAgICAgICAKIyAgZW5kaWYgICAgICAgICAg CiNlbmRpZgoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBUaGUgYWxsb2NhdGlvbnMuICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ki8KI2lmKCBIQVZFX0FMTE9DQSApCiMgICBpZiggIWRlZmluZWQoIGFsbG9jYSApICkKZXh0ZXJu IG9ial90IGFsbG9jYSgpOwojICAgZW5kaWYKI2Vsc2UKIyAgIGRlZmluZSBhbGxvY2EoIHN6ICkg R0NfTUFMTE9DKCBzeiApCiNlbmRpZgoKI2lmKCAhZGVmaW5lZCggX19HTlVDX18gKSB8fCAoVEhF X0dDICE9IEJPRUhNX0dDKSApCiAgICAgIGV4dGVybiBvYmpfdCBhbl9vYmplY3Q7CiMgICBkZWZp bmUgQU5fT0JKRUNUIG9ial90IGFuX29iamVjdDsKI2Vsc2UKIyAgIGRlZmluZSBBTl9PQkpFQ1Qg CiNlbmRpZgoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBlcXVpdmFsZW5jZXMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ki8KI2RlZmluZSBFUVAoIG8xLCBvMiApICgobG9uZylvMSA9PSAobG9uZylvMikKCiNkZWZpbmUg Qk9PTEVBTlAoIG8gKSAoKChsb25nKW8gPT0gKGxvbmcpQlRSVUUpIHx8ICgobG9uZylvID09IChs b25nKUJGQUxTRSkpCgojZGVmaW5lIE5PVCggbyApICghbykgICAKCi8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K LyogICAgTGVzIG1hY3JvcyBxdWkgc2VydmVudCBhIHRhZ3Vlci9kZXRhZ3VlciAgICAgICAgICAg ICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNkZWZpbmUgVEFHKCB2YWwsIHNoaWZ0 LCB0YWcgKSAgICgobG9uZykoKChsb25nKSh2YWwpIDw8IHNoaWZ0KSB8IHRhZykpCiNkZWZpbmUg VU5UQUcoIHZhbCwgc2hpZnQsIHRhZyApICgobG9uZykoKGxvbmcpKHZhbCkgPj4gc2hpZnQpKQoK I2RlZmluZSBPQkpfU0laRSAgICAgICAgICAgICAgICAgKChsb25nKShzaXplb2YoIG9ial90ICkp KQojZGVmaW5lIFRZUEUoIG8gKSAgICAgICAgICAgICAgICBIRUFERVJfVFlQRSggKENSRUYoIG8g KS0+aGVhZGVyKSApCgojaWYoIFRBR19TVFJVQ1QgIT0gMCApCiMgICBkZWZpbmUgUE9JTlRFUlAo IG8gKSAgICAgICAgICgoKChsb25nKW8pICYgVEFHX01BU0spID09IFRBR19TVFJVQ1QpCiNlbHNl CiMgICBkZWZpbmUgUE9JTlRFUlAoIG8gKSAgICAgICAgICgoKCgobG9uZylvKSAmIFRBR19NQVNL KSA9PSBUQUdfU1RSVUNUKSAmJiBvKQojZW5kaWYKCiNpZiggVEFHX0NOU1QgIT0gMCApCiMgICBk ZWZpbmUgQ05TVFAoIG8gKSAgICAgICAgICAgICgoKChsb25nKW8pICYgVEFHX01BU0spID09IFRB R19DTlNUKQojZWxzZQojICAgZGVmaW5lIENOU1RQKCBvICkgICAgICAgICAgICAoKG8pICYmICgo KChsb25nKW8pICYgVEFHX01BU0spID09IFRBR19DTlNUKSkKI2VuZGlmCgovKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSovCi8qICAgIEhlYWRlciBtYW5hZ21lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwojZGVmaW5lIE1BS0VfSEVBREVS KCBpLCBzeiApICAgICAoKGhlYWRlcl90KVRBRyggaSwgVFlQRV9TSElGVCwgMCApKQoKI2RlZmlu ZSBIRUFERVJfTkJfQklUICAgICAgICAgICAgMyAvKiBUaGUgbnVtYmVyIG9mIHJlc2VydmVkIGJp dCBwZXIgICAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGhlYWRlci4g VGhpcyBjdXJyZW5jdCAzIHZhbHVlIGlzICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogbWVhbmluZ2xlc3MuIE5vbmUgb2YgdGhpcyB0aHJlZSAgKi8KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiBiaXQgKHZhbHVlcyAxLCAyIGFuZCA0KSBpcyB1c2Vk ICAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJ1dCBoZWFkZXIgbWFu YWdlciBzdXBwb3NlIHRoZXkgICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogYXJlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KCiNkZWZpbmUgU0laRV9CSVRf U0laRSAgICAgICAgICAgIDQKI2RlZmluZSBTSVpFX01BU0sgICAgICAgICAgICAgICAgKCgxIDw8 IFNJWkVfQklUX1NJWkUpIC0gMSkKCiNkZWZpbmUgVFlQRV9TSElGVCAgICAgICAgICAgICAgIChI RUFERVJfTkJfQklUICsgU0laRV9CSVRfU0laRSArIDEpCiNkZWZpbmUgSEVBREVSX1RZUEUoIGkg KSAgICAgICAgIChsb25nKVVOVEFHKCBpLCBUWVBFX1NISUZULCAwICkKCiNkZWZpbmUgSEVBREVS X1NJWkUoIGggKSAgICAgICAgICgoaCA+PiBIRUFERVJfTkJfQklUKSAmIFNJWkVfTUFTSykKCi8q LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKi8KLyogICAgTGVzIG1hY3JvcyBkZSBjb252ZXJzaW9ucyB1dGlsaXNlZXMg cGFyIGBTcWljJyAgICAgICAgICAgICAgICAgICAqLwovKiAgICAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICovCi8qICAgIEF0 dGVudGlvbiwgaWwgZXN0IG5vcm1hbCBxdWUgcG91ciBmYWlyZSBsYSBjb252ZXJzaW9uIGBiaWds b28tPmMnKi8KLyogICAgaid1dGlsaXNlIHVuZSBzb3VzdHJhY3Rpb24gZXQgbm9uIHBhcyB1biBg YW5kJy4gRW4gZmFpc2FudCBjb21tZSAqLwovKiAgICBjYSwgbGUgY29tcGlsYXRldXIgQyBwZXV0 IGJpZW4gb3B0aW1pc2VyIGxlcyBhY2Nlc3MgYXV4ICAgICAgICAgICovCi8qICAgIGRpZmZlcmVu dHMgY2hhbXBzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ki8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0qLwojZGVmaW5lIEJJTlQoIGkgKSAgICAgICAgICAob2JqX3QpVEFH KCBpLCBUQUdfU0hJRlQsIFRBR19JTlQgKQojZGVmaW5lIENJTlQoIGkgKSAgICAgICAgICAobG9u ZylVTlRBRyggaSwgVEFHX1NISUZULCBUQUdfSU5UICkKCiNpZiggVEFHX1NUUlVDVCA9PSAwICkK IyAgIGRlZmluZSBCUkVGKCByICkgICAgICAgKChvYmpfdCkocikpCiMgICBkZWZpbmUgQ1JFRigg ciApICAgICAgICgob2JqX3QpKHIpKQojZWxzZQojICAgZGVmaW5lIEJSRUYoIHIgKSAgICAgICAo KG9ial90KSgobG9uZylyICsgVEFHX1NUUlVDVCkpCiMgICBkZWZpbmUgQ1JFRiggciApICAgICAg ICgob2JqX3QpKChsb25nKXIgLSBUQUdfU1RSVUNUKSkKI2VuZGlmCgojZGVmaW5lIEJMSUdIVCgg bCApICAgICAgICBCUEFJUiggbCApCiNkZWZpbmUgQ0xJR0hUKCBsICkgICAgICAgIENQQUlSKCBs ICkKCiNpZiggZGVmaW5lZCggVEFHX1BBSVIgKSApCiMgICBkZWZpbmUgQlBBSVIoIHAgKSAgICAg ICgob2JqX3QpKChsb25nKXAgfCBUQUdfUEFJUikpCiMgICBkZWZpbmUgQ1BBSVIoIHAgKSAgICAg ICgob2JqX3QpKChsb25nKXAgLSBUQUdfUEFJUikpCiNlbHNlCiMgICBkZWZpbmUgQlBBSVIoIHAg KSAgICAgIEJSRUYoIHAgKQojICAgZGVmaW5lIENQQUlSKCBwICkgICAgICBDUkVGKCBwICkKI2Vu ZGlmCgojaWYoIGRlZmluZWQoIFRBR19DRUxMICkgKQojICAgZGVmaW5lIEJDRUxMKCBwICkgICAg ICAoKG9ial90KSgobG9uZylwIHwgVEFHX0NFTEwpKQojICAgZGVmaW5lIENDRUxMKCBwICkgICAg ICAoKG9ial90KSgobG9uZylwIC0gVEFHX0NFTEwpKQojZWxzZQojICAgZGVmaW5lIEJDRUxMKCBw ICkgICAgICBCUkVGKCBwICkKIyAgIGRlZmluZSBDQ0VMTCggcCApICAgICAgQ1JFRiggcCApCiNl bmRpZgoKI2lmKCBkZWZpbmVkKCBUQUdfVkVDVE9SICkgKQojICAgZGVmaW5lIEJWRUNUT1IoIHAg KSAgICAoKG9ial90KSgobG9uZylwIHwgVEFHX1ZFQ1RPUikpCiMgICBkZWZpbmUgQ1ZFQ1RPUigg cCApICAgICgob2JqX3QpKChsb25nKXAgLSBUQUdfVkVDVE9SKSkKI2Vsc2UKIyAgIGRlZmluZSBC VkVDVE9SKCBwICkgICAgQlJFRiggcCApCiMgICBkZWZpbmUgQ1ZFQ1RPUiggcCApICAgIENSRUYo IHAgKQojZW5kaWYKCiNpZiggZGVmaW5lZCggVEFHX1NUUlVDVFVSRSApICkKIyAgIGRlZmluZSBC U1RSVUNUVVJFKCByICkgKChvYmpfdCkoKGxvbmcpcCB8IFRBR19TVFJVQ1RVUkUpKQojICAgZGVm aW5lIENTVFJVQ1RVUkUoIHAgKSAoKG9ial90KSgobG9uZylwIC0gVEFHX1NUUlVDVFVSRSkpCiNl bHNlCiMgICBkZWZpbmUgQlNUUlVDVFVSRSggcCApIEJSRUYoIHAgKQojICAgZGVmaW5lIENTVFJV Q1RVUkUoIHAgKSBDUkVGKCBwICkKI2VuZGlmCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qICAgICEhISBX QVJOSU5HICEhISBXQVJOSU5HICEhISBXQVJOSU5HICEhISBXQVJOSU5HICEhISBXQVJOSU5HICEh ISAgKi8KLyogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSAgICAqLwovKiAgICBXZSBjYW4ndCB1c2UgZm9yIHRoZSB0d28gbWFj cm8gYFRBR19TVFJJTkcnIGFuZCBgVEFHX1JFQUwnICAgICAgICovCi8qICAgIGEgQyBvciBgfGAg YnV0IGFuIGFkZGl0aW9uLiBPdGhlcndpc2UsIGdjYywgcHJvZHVjZXMgdGhlICAgICAgICAgKi8K LyogICAgZXJyb3I6IGBpbml0aWFsaXplciBlbGVtZW50IGlzIG5vdCBjb21wdXRhYmxlIGF0IGxv YWQgdGltZScuICAgICAqLwovKiAgICBJZiBzb21lb25lIGNvdWxkIGV4cGxhaW4gdG8gbWUgd2hh dCBkb2VzIGl0IG1lYW5zLi4uICAgICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2lmKCBk ZWZpbmVkKCBUQUdfU1RSSU5HICkgKQojICAgZGVmaW5lIEJTVFJJTkcoIHAgKSAgICAoKG9ial90 KSgobG9uZylwICsgVEFHX1NUUklORykpCiMgICBkZWZpbmUgQ1NUUklORyggcCApICAgICgob2Jq X3QpKChsb25nKXAgLSBUQUdfU1RSSU5HKSkKI2Vsc2UKIyAgIGRlZmluZSBCU1RSSU5HKCBwICkg ICAgQlJFRiggcCApCiMgICBkZWZpbmUgQ1NUUklORyggcCApICAgIENSRUYoIHAgKQojZW5kaWYK CiNkZWZpbmUgQlVDUzJTVFJJTkcoIHAgKSAgIEJSRUYoIHAgKQojZGVmaW5lIENVQ1MyU1RSSU5H KCBwICkgICBDUkVGKCBwICkKCiNpZiggZGVmaW5lZCggVEFHX1JFQUwgKSApCiMgICBkZWZpbmUg QlJFQUwoIHAgKSAgICAgICgob2JqX3QpKChsb25nKXAgKyBUQUdfUkVBTCkpCiMgICBkZWZpbmUg Q1JFQUwoIHAgKSAgICAgICgob2JqX3QpKChsb25nKXAgLSBUQUdfUkVBTCkpCiNlbHNlCiMgICBk ZWZpbmUgQlJFQUwoIHAgKSAgICAgIEJSRUYoIHAgKQojICAgZGVmaW5lIENSRUFMKCBwICkgICAg ICBDUkVGKCBwICkKI2VuZGlmCgojZGVmaW5lIEJGVU4oIGYgKSAgICAgICAgICAoKG9ial90KShm KSkKI2RlZmluZSBDRlVOKCBmICkgICAgICAgICAgKChvYmpfdCAoKikoKSkoZikpCgojZGVmaW5l IEJDTlNUKCBjICkgICAgICAgICAob2JqX3QpVEFHKCBjLCBUQUdfU0hJRlQsIFRBR19DTlNUICkK I2RlZmluZSBDQ05TVCggYyApICAgICAgICAgKGxvbmcpVU5UQUcoIGMsIFRBR19TSElGVCwgVEFH X0NOU1QgKQoKI2RlZmluZSBCQ09OVCggYyApICAgICAgICAgKChvYmpfdCkoYykpCiNkZWZpbmUg Q0NPTlQoIGMgKSAgICAgICAgIChjKQoKI2RlZmluZSBUUlVFUCggYyApICAgICAgICAgKChib29s X3QpKGMgIT0gQkZBTFNFKSkKCiNkZWZpbmUgQ0hBUl9TSElGVCAgICAgICAgIChUQUdfU0hJRlQg KyA2KQojZGVmaW5lIFVDUzJfU0hJRlQgICAgICAgICBDSEFSX1NISUZUCgojZGVmaW5lIEJDSEFS KCBpICkgICAgICAgICAoKG9ial90KSgobG9uZylCQ0hBUkggKyBcCgkJCQkgICgobG9uZykoKHVu c2lnbmVkIGNoYXIpKGkpIDw8IENIQVJfU0hJRlQpKSkpCiNkZWZpbmUgQ0NIQVIoIGkgKSAgICAg ICAgICgodW5zaWduZWQgY2hhcikoKHVuc2lnbmVkIGxvbmcpKGkpPj5DSEFSX1NISUZUKSkKCiNk ZWZpbmUgQkJPT0woIGkgKSAgICAgICAgIChpID8gQlRSVUUgOiBCRkFMU0UpCiNpZiggZGVmaW5l ZCggQkZBTFNFX0FTX0NGQUxTRSApICkKIyAgIGRlZmluZSBDQk9PTCggbyApICAgICAgKChib29s X3QpKChsb25nKW8pKQojZWxzZQojICAgZGVmaW5lIENCT09MKCBvICkgICAgICAobyAhPSBCRkFM U0UpCiNlbmRpZgoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBDb25zdGFudHMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKi8KI2RlZmluZSBCTklMICAgICAgICAgICgob2JqX3QpQkNOU1QoIDAgKSkKI2lmKCBkZWZp bmVkKCBCRkFMU0VfQVNfQ0ZBTFNFICkgKQojICAgZGVmaW5lIEJGQUxTRSAgICAgKChvYmpfdCkw KQojZWxzZQojICAgZGVmaW5lIEJGQUxTRSAgICAgKChvYmpfdClCQ05TVCggMSApKQojZW5kaWYK I2RlZmluZSBCVFJVRSAgICAgICAgICgob2JqX3QpQkNOU1QoIDIgKSkKI2RlZmluZSBCVU5TUEVD ICAgICAgICgob2JqX3QpQkNOU1QoIDMgKSkKI2RlZmluZSBCVUNTMkggICAgICAgICgob2JqX3Qp QkNOU1QoIDQgKSkKI2RlZmluZSBCQ0hBUkggICAgICAgICgob2JqX3QpQkNOU1QoIDUgKSkKI2Rl ZmluZSBCRU9GICAgICAgICAgICgob2JqX3QpQkNOU1QoIDB4MTAwICkpCiNkZWZpbmUgQkVPQSAg ICAgICAgICAoKG9ial90KUJDTlNUKCAweDEwMSApKQovKiBhbnkgY2hhbmdlIHRvIHRoZXNlIHZh bHVlcyBtdXN0IGJlIHJlcG9ydGVkIGluIGNvbXB0aW1lL2Rzc3NsLnNjbSAqLwojZGVmaW5lIEJP UFRJT05BTCAgICAgKChvYmpfdClCQ05TVCggMHgxMDIgKSkKI2RlZmluZSBCUkVTVCAgICAgICAg ICgob2JqX3QpQkNOU1QoIDB4MTAzICkpCiNkZWZpbmUgQktFWSAgICAgICAgICAoKG9ial90KUJD TlNUKCAweDEwNiApKQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBBcnJheSBib3VuZCBjaGVja2lu ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKi8KI2lmKCBUQUdfU0hJRlQgPD0gTE9OR19NQVggKQojICAgZGVmaW5lIEJPVU5EX0NI RUNLKCBvLCB2ICkgKCh1bnNpZ25lZCBsb25nKW8gPCAodW5zaWduZWQgbG9uZyl2KQojZWxzZQoj ICAgZGVmaW5lIEJPVU5EX0NIRUNLKCBvLCB2ICkgKCgobG9uZylvID49IDApICYmICgobG9uZylv IDwgKGxvbmcpdikpCiNlbmRpZgoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBMZSB0YWJsZWF1IGRl cyBjb25zdGFudGVzIChwb3VyIGwnaW5pdGlhbGlzYXRpb24gZGVzIG1vZHVsZXMpLiAgICovCi8q ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0gICAgKi8KLyogICAgQ2VzIGRldXggbWFjcm9zIHNlcnZlbnQgYSBsJ2luaXRpYWxp c2F0aW9uIGRlcyBjb25zdGFudGVzLiBDJ2VzdCAqLwovKiAgICB1biBwZXUgYXN0dWNpZXV4IGxh IGZhY29uIGRvbnQgYydlc3QgZmFpdC4gSWwgZmF1dCByZWdhcmRlciBsZSAgICovCi8qICAgIGZp Y2hpZXIgYGNvbXB0aW1lL0Nuc3QvcmVhZC1hbGxvYy5zY20nIHBvdXIgY29tcHJlbmRyZSBjb21t ZW50ICAgKi8KLyogICAgY2EgbWFyY2hlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNkZWZpbmUgQ05TVF9U QUJMRV9TRVQoIG9mZnNldCwgdmFsdWUgKSAgICAgICAgICAgICBcCiAgICggX19jbnN0WyBvZmZz ZXQgXSA9IHZhbHVlLCAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgQlVOU1BFQyApCgojZGVm aW5lIENOU1RfVEFCTEVfUkVGKCBvZmZzZXQgKSBfX2Nuc3RbIG9mZnNldCBdCgovKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSovCi8qICAgIGNvbnN0YW50IGFsaWdubWVudCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwojaWYoIGRlZmluZWQoIENP TlNUQU5UX0FMSUdORUQgKSAmJiAhQ09OU1RBTlRfQUxJR05FRCApCiMgICBpZiggZGVmaW5lZCgg X19HTlVDX18gKSApCiAgICAgICAvKiB0aGlzIHJlcXVpcmUgZ2NjIGF0IGxlYXN0IHZlcnNpb24g Mi43LjIgKi8KIyAgICAgIGRlZmluZSBfX0NOU1RfQUxJR04gX19hdHRyaWJ1dGVfXyAoKGFsaWdu ZWQgKEFMSUdOTUVOVF9WQUxVRSkpKQojICAgZWxzZQogICAgICAgLS0+IGVycm9yICJFbmFibGUg dG8gZW5mb3JjZSBhbGlnbm1lbnQiCiMgICBlbmRpZgojZWxzZQojICAgZGVmaW5lIF9fQ05TVF9B TElHTgojZW5kaWYKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgU3RhdGljIGFsbG9jYXRpb25zLiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSovCiNpZiggIWRlZmluZWQoIFRBR19TVFJJTkcgKSApCiMgICBkZWZpbmUgREVGSU5FX1NU UklORyggbmFtZSwgYXV4LCBzdHIsIGxlbiApICAgICAgICAgICAgICAgXAogICAgICBzdGF0aWMg c3RydWN0IHsgaGVhZGVyX3QgaGVhZGVyOyAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAg ICAgICAgICAgICAgICAgIGludCAgICAgIGxlbmd0aDsgICAgICAgICAgICAgICAgICAgICAgICBc CiAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICBzdHJpbmdbbGVuKzFdOyB9IF9fQ05TVF9B TElHTiAgXAogICAgICAgICBhdXggPSB7IE1BS0VfSEVBREVSKCBTVFJJTkdfVFlQRSwgMCApLCBs ZW4sIHN0ciB9OyAgIFwKICAgICAgICAgc3RhdGljIG9ial90IG5hbWUgPSBCU1RSSU5HKCAmYXV4 ICkKI2Vsc2UKIyAgIGRlZmluZSBERUZJTkVfU1RSSU5HKCBuYW1lLCBhdXgsIHN0ciwgbGVuICkg ICAgICAgICAgICAgICBcCiAgICAgIHN0YXRpYyBzdHJ1Y3QgeyBpbnQgICAgICBsZW5ndGg7ICAg ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgc3Ry aW5nW2xlbisxXTsgfSBfX0NOU1RfQUxJR04gIFwKICAgICAgICAgYXV4ID0geyBsZW4sIHN0ciB9 OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHN0YXRpYyBvYmpf dCBuYW1lID0gQlNUUklORyggJmF1eCApCiNlbmRpZgoKI2lmKCAhZGVmaW5lZCggVEFHX1JFQUwg KSApCiMgICBkZWZpbmUgREVGSU5FX1JFQUwoIG5hbWUsIGF1eCwgZmxvbnVtICkgICAgICAgICAg ICAgICAgICAgXAogICAgICBzdGF0aWMgc3RydWN0IHsgaGVhZGVyX3QgaGVhZGVyOyAgICAgICAg ICAgICAgICAgICAgICAgIFwKCQkgICAgICBkb3VibGUgICByZWFsOyB9IF9fQ05TVF9BTElHTiAg ICAgICAgICAgXAogICAgICAgICBhdXggPSB7IE1BS0VfSEVBREVSKCBSRUFMX1RZUEUsIDAgKSwg ZmxvbnVtIH07ICAgICAgIFwKICAgICAgICAgb2JqX3QgbmFtZSA9IEJSRUFMKCAmYXV4ICkKI2Vs c2UKIyAgIGRlZmluZSBERUZJTkVfUkVBTCggbmFtZSwgYXV4LCBmbG9udW0gKSAgICAgICAgICAg ICAgICAgICBcCiAgICAgIHN0YXRpYyBzdHJ1Y3QgeyBkb3VibGUgICByZWFsOyB9IF9fQ05TVF9B TElHTiAgICAgICAgICAgXAogICAgICAgICBhdXggPSB7IGZsb251bSB9OyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgb2JqX3QgbmFtZSA9IEJSRUFMKCAmYXV4 ICkKI2VuZGlmCgojZGVmaW5lIERFRklORV9FWFBPUlRfUFJPQ0VEVVJFKCBuLCBuYSwgcCwgdnAs IG5iX2FyZ3MgKSAgICAgIFwKICAgc3RhdGljIHN0cnVjdCB7IGhlYWRlcl90IGhlYWRlcjsgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICBvYmpfdCAgICAoKmVu dHJ5KSgpOyAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgb2JqX3Qg ICAgKCp2YV9lbnRyeSkoKTsgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAg IGludCAgICAgIGFyaXR5OyB9IF9fQ05TVF9BTElHTiAgICAgICAgICAgICBcCiAgICAgIG5hID0g eyBNQUtFX0hFQURFUiggUFJPQ0VEVVJFX1RZUEUsIDAgKSwgICAgICAgICAgICAgICAgXAoJICAg ICAob2JqX3QgKCopKCkpcCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoJICAg ICAob2JqX3QgKCopKCkpdnAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoJICAg ICBuYl9hcmdzIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg ICBvYmpfdCBuID0gQlJFRiggJm5hICkKCiNkZWZpbmUgREVGSU5FX1NUQVRJQ19QUk9DRURVUkUo IG4sIG5hLCBwLCB2cCwgbmJfYXJncyApICAgICAgXAogICBzdGF0aWMgc3RydWN0IHsgaGVhZGVy X3QgaGVhZGVyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAg IG9ial90ICAgICgqZW50cnkpKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAg ICAgICAgICBvYmpfdCAgICAoKnZhX2VudHJ5KSgpOyAgICAgICAgICAgICAgICAgICAgXAogICAg ICAgICAgICAgICAgICAgaW50ICAgICAgYXJpdHk7IH0gX19DTlNUX0FMSUdOICAgICAgICAgICAg IFwKICAgICAgbmEgPSB7IE1BS0VfSEVBREVSKCBQUk9DRURVUkVfVFlQRSwgMCApLCAgICAgICAg ICAgICAgICBcCiAgICAgICAgICAgICAob2JqX3QgKCopKCkpcCwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAoJICAgICAob2JqX3QgKCopKCkpdnAsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAoJICAgICBuYl9hcmdzIH07ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAogICAgICBzdGF0aWMgb2JqX3QgbiA9IEJSRUYoICZuYSApCgojZGVm aW5lIERFRklORV9FWFBPUlRfR0VORVJJQyggbiwgbmEsIHAsIHZwLCBuYl9hcmdzICkgICAgICAg IFwKICAgc3RhdGljIHN0cnVjdCB7IGhlYWRlcl90IGhlYWRlcjsgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCiAgICAgICAgICAgICAgICAgICBvYmpfdCAgICAoKmVudHJ5KSgpOyAgICAgICAg ICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgb2JqX3QgICAgKCp2YV9lbnRyeSko KTsgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgIGludCAgICAgIGFyaXR5 OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCgkJICAgb2JqX3QgICAgZW52MDsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKCQkgICBvYmpfdCAgICBlbnYxOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAoJCSAgIG9ial90ICAgIGVudjI7IH0gX19DTlNUX0FMSUdOICAgICAg ICAgICAgICBcCiAgICAgIG5hID0geyBNQUtFX0hFQURFUiggUFJPQ0VEVVJFX1RZUEUsIDAgKSwg ICAgICAgICAgICAgICAgXAoJICAgICAob2JqX3QgKCopKCkpcCwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAoJICAgICAob2JqX3QgKCopKCkpdnAsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAoJICAgICBuYl9hcmdzLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAoJICAgICBCRkFMU0UsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAoJICAgICBCRkFMU0UsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAoJICAgICBCVU5TUEVDfTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAogICAgICBvYmpfdCBuID0gQlJFRiggJm5hICkKCiNkZWZpbmUgREVG SU5FX1NUQVRJQ19HRU5FUklDKCBuLCBuYSwgcCwgdnAsIG5iX2FyZ3MgKSAgICAgICAgXAogICBz dGF0aWMgc3RydWN0IHsgaGVhZGVyX3QgaGVhZGVyOyAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKICAgICAgICAgICAgICAgICAgIG9ial90ICAgICgqZW50cnkpKCk7ICAgICAgICAgICAgICAg ICAgICAgICBcCiAgICAgICAgICAgICAgICAgICBvYmpfdCAgICAoKnZhX2VudHJ5KSgpOyAgICAg ICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgaW50ICAgICAgYXJpdHk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKCQkgICBvYmpfdCAgICBlbnYwOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAoJCSAgIG9ial90ICAgIGVudjE7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCgkJICAgb2JqX3QgICAgZW52MjsgfSBfX0NOU1RfQUxJR04gICAgICAgICAgICAg IFwKICAgICAgbmEgPSB7IE1BS0VfSEVBREVSKCBQUk9DRURVUkVfVFlQRSwgMCApLCAgICAgICAg ICAgICAgICBcCiAgICAgICAgICAgICAob2JqX3QgKCopKCkpcCwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAoJICAgICAob2JqX3QgKCopKCkpdnAsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAoJICAgICBuYl9hcmdzLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAoJICAgICBCRkFMU0UsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAoJICAgICBCRkFMU0UsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAoJICAgICBCVU5TUEVDfTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAogICAgICBzdGF0aWMgb2JqX3QgbiA9IEJSRUYoICZuYSApCgojZGVm aW5lIERFRklORV9UVkVDVE9SX1NUQVJUKCBhdXgsIGxlbiwgaXR5cGUgKSAgICAgICAgICAgICAg IFwKICAgc3RhdGljIHN0cnVjdCB7IGhlYWRlcl90IGhlYWRlcjsgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCgkJICAgaW50ICAgICAgbGVuZ3RoOyAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKCQkgICBvYmpfdCAgICBkZXNjcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoJCSAg IGl0eXBlICAgIGl0ZW1zWyBsZW4gXTsgfSBfX0NOU1RfQUxJR04gICAgICBcCiAgICAgIGF1eCA9 IHsgTUFLRV9IRUFERVIoIFRWRUNUT1JfVFlQRSwgMCApLCBsZW4sIDBMLAoJICAgICAgCiNkZWZp bmUgREVGSU5FX1RWRUNUT1JfU1RPUCggbmFtZSwgYXV4ICkgICAJICAgICAgICAgICAgICBcCgkg ICB9OyBzdGF0aWMgb2JqX3QgbmFtZSA9IEJSRUYoICZhdXggKQoKLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwov KiAgICBTdGFjayBhbGxvY2F0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2lmKCBkZWZpbmVkKCBfX0dOVUNfXyAp ICkKIyAgIGRlZmluZSBBTExPQ0FURV9UVkVDVE9SX01BTExPQyggTUFMTE9DLCBfaXRlbV90eXBl LCBfbGVuLCBfZGVzY3IgKSBcCiAgICAgICggeyBvYmpfdCBhbl9vYmplY3Q7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoJICBhbl9vYmplY3QgPSBNQUxMT0Mo c2l6ZW9mKHN0cnVjdCB7IGhlYWRlcl90ICAgICAgICBoZWFkZXI7ICAgXAoJCSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgIGxlbmd0aDsgICBcCgkJICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvYmpfdCAgICAgICAgICAgZGVzY3I7ICAgIFwKCQkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF9pdGVtX3R5cGUgICAgICBlbDA7IH0pICAgXAoJCQkgICAg ICArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKCQkJICAgICAgKChf bGVuLTEpICogc2l6ZW9mKF9pdGVtX3R5cGUpKSk7ICAgICAgICBcCgkgIChhbl9vYmplY3QtPnR2 ZWN0b3JfdCkuaGVhZGVyICAgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCgkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTUFLRV9IRUFERVIoIFRWRUNUT1JfVFlQRSwgMCApOyBc CgkgIChhbl9vYmplY3QtPnR2ZWN0b3JfdCkubGVuZ3RoICAgPSBfbGVuOyAgICAgICAgICAgICAg ICAgICAgICBcCgkgIChhbl9vYmplY3QtPnR2ZWN0b3JfdCkuZGVzY3IgICAgPSBfZGVzY3I7ICAg ICAgICAgICAgICAgICAgICBcCiAgICAgICAgICBCR0xfSEVBUF9ERUJVR19NQVJLX09CSiggQlJF RiggYW5fb2JqZWN0ICkgKTsgfSApCiNlbHNlCiMgICBkZWZpbmUgQUxMT0NBVEVfVFZFQ1RPUl9N QUxMT0MoIE1BTExPQywgX2l0ZW1fdHlwZSwgX2xlbiwgX2Rlc2NyICkgXAogICAgICAoICAgYW5f b2JqZWN0ID0gTUFMTE9DKHNpemVvZihzdHJ1Y3QgeyBoZWFkZXJfdCAgICAgICAgaGVhZGVyOyAg IFwKCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICBsZW5ndGg7 ICAgXAoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqX3QgICAgICAgICAgIGRlc2Ny OyAgICBcCgkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaXRlbV90eXBlICAgICAgZWww OyB9KSAgIFwKCQkJICAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCgkJCSAgICAgICgoX2xlbi0xKSAqIHNpemVvZihfaXRlbV90eXBlKSkpLCAgICAgICAgXAoJ ICAoYW5fb2JqZWN0LT50dmVjdG9yX3QpLmhlYWRlciAgID0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BS0VfSEVBREVSKCBUVkVD VE9SX1RZUEUsIDAgKSwgXAoJICAoYW5fb2JqZWN0LT50dmVjdG9yX3QpLmxlbmd0aCAgID0gX2xl biwgICAgICAgICAgICAgICAgICAgICAgXAoJICAoYW5fb2JqZWN0LT50dmVjdG9yX3QpLmRlc2Ny ICAgID0gX2Rlc2NyLCAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgQkdMX0hFQVBfREVC VUdfTUFSS19PQkooIEJSRUYoIGFuX29iamVjdCApICkgKQojZW5kaWYKCiNkZWZpbmUgQUxMT0NB VEVfVFZFQ1RPUiggX2l0ZW1fdHlwZSwgX2xlbiwgX2Rlc2NyICkgICBcCiAgIEFMTE9DQVRFX1RW RUNUT1JfTUFMTE9DKCBHQ19NQUxMT0MsIF9pdGVtX3R5cGUsIF9sZW4sIF9kZXNjciApCiNkZWZp bmUgQUxMT0NBVEVfQVRPTUlDX1RWRUNUT1IoIF9pdGVtX3R5cGUsIF9sZW4sIF9kZXNjciApICAg XAogICBBTExPQ0FURV9UVkVDVE9SX01BTExPQyggR0NfTUFMTE9DX0FUT01JQywgX2l0ZW1fdHlw ZSwgX2xlbiwgX2Rlc2NyICkKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgVGhlIGRlYnVnZ2luZyBz dHJhY2sgdHJhY2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSovCnN0cnVjdCBkZnJhbWUgewogICBvYmpfdCAgICAgICAgICBzeW1ib2w7CiAg IHN0cnVjdCBkZnJhbWUgKmxpbms7ICAKfTsKCiNkZWZpbmUgUFVTSF9UUkFDRSggbmFtZSApICAg ICAgICAgICAgICAgICAgICAgICAgIFwKICAgc3RydWN0IGRmcmFtZSAgZnJhbWU7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAogICBzdHJ1Y3QgZGZyYW1lICpsaW5rOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKICAgZnJhbWUuc3ltYm9sID0gbmFtZTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAogICBmcmFtZS5saW5rICAgPSB0b3Bfb2ZfZnJhbWU7ICAgICAgICAgICAgICAgICAg ICBcCiAgIGxpbmsgICAgICAgICA9IHRvcF9vZl9mcmFtZTsgICAgICAgICAgICAgICAgICAgIFwK ICAgdG9wX29mX2ZyYW1lID0gJmZyYW1lOyAgICAgICAgICAgIAoKI2RlZmluZSBQT1BfVFJBQ0Uo KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICB0b3Bfb2ZfZnJhbWUgPSBsaW5r OwoKI2RlZmluZSBFVkFMX1BVU0hfVFJBQ0UoIG5hbWUgKSB7IFBVU0hfVFJBQ0UoIG5hbWUgKQoj ZGVmaW5lIEVWQUxfUE9QX1RSQUNFKCkgICAgICAgICAgUE9QX1RSQUNFKCkgfQoKI2RlZmluZSBH RVRfVFJBQ0UoKSBCUkVGKCB0b3Bfb2ZfZnJhbWUgKQoKLyogYWZ0ZXIgYSBiaW5kLWV4aXQsIHdl IG11c3QgcmVzZXQgdGhlIGN1cnJlbnQgdHJhY2UgKi8KI2RlZmluZSBSRVNUT1JFX1RSQUNFKCkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICB0b3Bfb2ZfZnJhbWUgPSAmZnJhbWU7Cgpl eHRlcm4gc3RydWN0IGRmcmFtZSBmcmFtZTsKZXh0ZXJuIHN0cnVjdCBkZnJhbWUgKnRvcF9vZl9m cmFtZTsKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgRmFpbHVyZXMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov CiNkZWZpbmUgRkFJTFVSRSggcHJvYywgbXNnLCBvYmogKSBiaWdsb29fZXhpdCggQklOVCggYmln bG9vX2Fib3J0KCBDSU5UKCB0aGVfZmFpbHVyZSggcHJvYywgbXNnLCBvYmogKSApICkgKSApCgoj ZGVmaW5lIENfRkFJTFVSRSggcHJvYywgbXNnLCBvYmogKSBGQUlMVVJFKCBzdHJpbmdfdG9fYnN0 cmluZyggcHJvYyApLCBcCgkJCQkJICAgICBzdHJpbmdfdG9fYnN0cmluZyggbXNnICksICBcCgkJ CQkJICAgICBvYmogKQoKZXh0ZXJuIG9ial90IGJpZ2xvb19lcnJvcl9oYW5kbGVyOwogICAKI2Rl ZmluZSBHRVRfRVJST1JfSEFORExFUigpIGJpZ2xvb19lcnJvcl9oYW5kbGVyCiNkZWZpbmUgU0VU X0VSUk9SX0hBTkRMRVIoIF9oZGwgKSAoYmlnbG9vX2Vycm9yX2hhbmRsZXIgPSAoX2hkbCkpCiAg IAovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSovCi8qICAgIENlbGxzICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwojaWYo ICEoZGVmaW5lZCggVEFHX0NFTEwgKSApICkgCiMgICBkZWZpbmUgQ0VMTF9TSVpFIChzaXplb2Yo IHN0cnVjdCBjZWxsICkpCiNlbmRpZgojaWYoICFkZWZpbmVkKCBUQUdfQ0VMTCApICkKIyAgIGRl ZmluZSBDRUxMUCggYyApIChQT0lOVEVSUCggYyApICYmIChUWVBFKCBjICkgPT0gQ0VMTF9UWVBF KSkKI2Vsc2UKIyAgIGRlZmluZSBDRUxMUCggYyApICgoYyAmJiAoKCgobG9uZyljKSZUQUdfTUFT SykgPT0gVEFHX0NFTEwpKSkKI2VuZGlmCgoKI2RlZmluZSBDRUxMKCBvICkgQ0NFTEwoIG8gKS0+ Y2VsbF90CgojaWYoIGRlZmluZWQoIFRBR19DRUxMICkgKQojICAgaWYoIGRlZmluZWQoIF9fR05V Q19fICkgKQojICAgICAgZGVmaW5lIE1BS0VfQ0VMTCggX3ZhbF8gKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAoIHsgb2JqX3QgKmFuX29iamVjdDsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKCSAgIGFuX29iamVjdCAg PSAob2JqX3QgKilHQ19NQUxMT0MoIHNpemVvZiggb2JqX3QgKSApOyAgICAgICAgICBcCgkgICAq YW5fb2JqZWN0ID0gKF92YWxfKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAoJICAgQkdMX0hFQVBfREVCVUdfTUFSS19PQkooIEJDRUxMKCBhbl9vYmplY3QgKSApOyB9 ICkKIyAgIGVsc2UKIyAgICAgIGRlZmluZSBNQUtFX0NFTEwoIF92YWxfICkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgKCBhbl9vYmplY3QgPSAob2JqX3Qp R0NfTUFMTE9DKCBzaXplb2YoIG9ial90ICkgKSwgICAgICAgICAgICAgICBcCgkgKigob2JqX3Qg Kilhbl9vYmplY3QpID0gKF92YWxfKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoJ IEJHTF9IRUFQX0RFQlVHX01BUktfT0JKKCBCQ0VMTCggYW5fb2JqZWN0ICkgKSApCiMgICBlbmRp ZgoKIyAgIGRlZmluZSBDRUxMX1JFRiggYyApICgqKG9ial90ICopQ0NFTEwoIGMgKSkKI2Vsc2UK IyAgIGlmKCBkZWZpbmVkKCBfX0dOVUNfXyApICkKIyAgICAgIGRlZmluZSBNQUtFX0NFTEwoIF92 YWxfICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgKCB7 IG9ial90IGFuX29iamVjdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCgkgICBhbl9vYmplY3QgPSBHQ19NQUxMT0MoIENFTExfU0laRSApOyAgICAgICAgICAg ICAgICAgICAgICAgICAgXAoJICAgYW5fb2JqZWN0LT5jZWxsX3QuaGVhZGVyID0gTUFLRV9IRUFE RVIoIENFTExfVFlQRSwgMCApOyAgICAgIFwKCSAgIGFuX29iamVjdC0+Y2VsbF90LnZhbCAgICA9 IChfdmFsXyk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCgkgICBCR0xfSEVBUF9ERUJVR19N QVJLX09CSiggQkNFTEwoIGFuX29iamVjdCApICk7IH0gKQojICAgZWxzZQojICAgICAgZGVmaW5l IE1BS0VfQ0VMTCggX3ZhbF8gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCiAgICAgICAoIGFuX29iamVjdCA9IEdDX01BTExPQyggQ0VMTF9TSVpFICksICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKCSBhbl9vYmplY3QtPmNlbGxfdC5oZWFkZXIgPSBNQUtFX0hF QURFUiggQ0VMTF9UWVBFLCAwICksICAgICAgICBcCiAgICAgICAgIGFuX29iamVjdC0+Y2VsbF90 LnZhbCAgICA9IChfdmFsXyksICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKCSBCR0xfSEVB UF9ERUJVR19NQVJLX09CSiggQkNFTEwoIGFuX29iamVjdCApICkgKQojICAgZW5kaWYKCiMgICBk ZWZpbmUgQ0VMTF9SRUYoIGMgKSAoKENDRUxMKCBjICktPmNlbGxfdCkudmFsKQojZW5kaWYKCiNk ZWZpbmUgQ0VMTF9TRVQoIGMsIHYgKSBcCiAgIChDRUxMX1JFRiggYyApID0gdiwgQlVOU1BFQykK Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKi8KLyogICAgUGVlayAmIFBva2UgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNkZWZp bmUgUEVFSyggdiwgaSApICgob2JqX3QgKikoQ1JFRiggdiApKSlbIGkgXQojZGVmaW5lIFBPS0Uo IHZhciwgaSwgdmFsICkgKFBFRUsoIHZhciwgaSApID0gdmFsLCB2YXIpCgovKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSovCi8qICAgIFBhaXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwojZGVmaW5lIFBBSVJfU0laRSAg ICAgICAgICAoc2l6ZW9mKCBzdHJ1Y3QgcGFpciApKQojZGVmaW5lIEVYVEVOREVEX1BBSVJfU0la RSAoc2l6ZW9mKCBzdHJ1Y3QgZXh0ZW5kZWRfcGFpciApKQoKI2RlZmluZSBQQUlSKCBvICkgICAg ICAgICAgKENQQUlSKCBvICktPnBhaXJfdCkKI2RlZmluZSBFUEFJUiggbyApICAgICAgICAgKENQ QUlSKCBvICktPmV4dGVuZGVkX3BhaXJfdCkKCiNpZiggKFRIRV9HQyA9PSBCT0VITV9HQykgJiYg VEFHX1BBSVIgKQojICAgZGVmaW5lIE1BS0VfUEFJUiggYSwgZCApIG1ha2VfcGFpciggYSwgZCAp CiNlbHNlCiMgICBpZiggZGVmaW5lZCggVEFHX1BBSVIgKSApCiMgICAgIGlmKCBkZWZpbmVkKCBf X0dOVUNfXyApICkKIyAgICAgIGRlZmluZSBNQUtFX1BBSVIoIGEsIGQgKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgKHsgb2JqX3QgYW5fb2JqZWN0 OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAg ICAgIGFuX29iamVjdCA9IEdDX01BTExPQyggUEFJUl9TSVpFICk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKCSAgIGFuX29iamVjdC0+cGFpcl90LmNhciA9IGE7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKCSAgIGFuX29iamVjdC0+cGFpcl90LmNkciA9IGQ7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICBCR0xfSEVBUF9E RUJVR19NQVJLX09CSiggQlBBSVIoIGFuX29iamVjdCApICk7IH0pCiMgICAgIGVsc2UKIyAgICAg IGRlZmluZSBNQUtFX1BBSVIoIGEsIGQgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCiAgICAgICAgKGFuX29iamVjdCA9IEdDX01BTExPQyggUEFJUl9TSVpFICks ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoJIGFuX29iamVjdC0+cGFpcl90LmNhciA9 IGEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoJIGFuX29iamVjdC0+ cGFpcl90LmNkciA9IGQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog ICAgICAgICBCR0xfSEVBUF9ERUJVR19NQVJLX09CSiggQlBBSVIoIGFuX29iamVjdCApICkgKQoj ICAgICBlbmRpZgojICAgZWxzZQojICAgICBpZiggZGVmaW5lZCggX19HTlVDX18gKSApCiMgICAg ICBkZWZpbmUgTUFLRV9QQUlSKCBhLCBkICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAogICAgICAgICh7IG9ial90IGFuX29iamVjdDsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICBhbl9vYmplY3QgPSBH Q19NQUxMT0MoIFBBSVJfU0laRSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIAkg ICBhbl9vYmplY3QtPnBhaXJfdC5oZWFkZXIgPSBNQUtFX0hFQURFUiggUEFJUl9UWVBFLCAwICk7 ICAgICAgICBcCgkgICBhbl9vYmplY3QtPnBhaXJfdC5jYXIgICAgPSBhOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCgkgICBhbl9vYmplY3QtPnBhaXJfdC5jZHIgICAgPSBkOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgQkdMX0hFQVBfREVC VUdfTUFSS19PQkooIEJQQUlSKCBhbl9vYmplY3QgKSApOyB9KSAKIyAgICAgZWxzZQojICAgICAg ZGVmaW5lIE1BS0VfUEFJUiggYSwgZCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKICAgICAgICAoYW5fb2JqZWN0ID0gR0NfTUFMTE9DKCBQQUlSX1NJWkUgKSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCgkgYW5fb2JqZWN0LT5wYWlyX3QuaGVhZGVy ID0gTUFLRV9IRUFERVIoIFBBSVJfVFlQRSwgMCApLCAgICAgICAgICBcCgkgYW5fb2JqZWN0LT5w YWlyX3QuY2FyICAgID0gYSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCgkg YW5fb2JqZWN0LT5wYWlyX3QuY2RyICAgID0gZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCiAgICAgICAgIEJHTF9IRUFQX0RFQlVHX01BUktfT0JKKCBCUEFJUiggYW5fb2Jq ZWN0ICkgKSApCiMgICAgIGVuZGlmCiMgICBlbmRpZgojZW5kaWYKCiNpZiggZGVmaW5lZCggVEFH X1BBSVIgKSApCiNpZiggZGVmaW5lZCggX19HTlVDX18gKSApCiMgICBkZWZpbmUgTUFLRV9FWFRF TkRFRF9QQUlSKCBhLCBkLCBlICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog ICAgICAoIHsgb2JqX3QgYW5fb2JqZWN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKCSAgYW5fb2JqZWN0ID0gR0NfTUFMTE9DKCBFWFRFTkRFRF9QQUlS X1NJWkUgKTsgICAgICAgICAgICAgICAgICAgIFwKCSAgYW5fb2JqZWN0LT5leHRlbmRlZF9wYWly X3QuY2FyICAgICA9IGE7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKCSAgYW5fb2JqZWN0LT5l eHRlbmRlZF9wYWlyX3QuY2RyICAgICA9IGQ7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKCSAg YW5fb2JqZWN0LT5leHRlbmRlZF9wYWlyX3QuY2VyICAgICA9IGU7ICAgICAgICAgICAgICAgICAg ICAgICAgIFwKCSAgYW5fb2JqZWN0LT5leHRlbmRlZF9wYWlyX3QuZWhlYWRlciA9IEJJTlQoIEVY VEVOREVEX1BBSVJfVFlQRSApO1wKCSAgQkdMX0hFQVBfREVCVUdfTUFSS19PQkooIEJQQUlSKCBh bl9vYmplY3QgKSApOyB9ICkKI2Vsc2UKIyAgIGRlZmluZSBNQUtFX0VYVEVOREVEX1BBSVIoIGEs IGQsIGUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICggIGFuX29i amVjdCA9IEdDX01BTExPQyggRVhURU5ERURfUEFJUl9TSVpFICksICAgICAgICAgICAgICAgICAg ICAgXAoJIGFuX29iamVjdC0+ZXh0ZW5kZWRfcGFpcl90LmNhciAgICAgPSBhLCAgICAgICAgICAg ICAgICAgICAgICAgICAgXAoJIGFuX29iamVjdC0+ZXh0ZW5kZWRfcGFpcl90LmNkciAgICAgPSBk LCAgICAgICAgICAgICAgICAgICAgICAgICAgXAoJIGFuX29iamVjdC0+ZXh0ZW5kZWRfcGFpcl90 LmNlciAgICAgPSBlLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAoJIGFuX29iamVjdC0+ZXh0 ZW5kZWRfcGFpcl90LmVoZWFkZXIgPSBCSU5UKCBFWFRFTkRFRF9QQUlSX1RZUEUgKSwgXAogICAg ICAgICBCR0xfSEVBUF9ERUJVR19NQVJLX09CSiggQlBBSVIoIGFuX29iamVjdCApICkgKQojZW5k aWYKI2Vsc2UKI2lmKCBkZWZpbmVkKCBfX0dOVUNfXyApICkKIyAgIGRlZmluZSBNQUtFX0VYVEVO REVEX1BBSVIoIGEsIGQsIGUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg ICAgICggeyBvYmpfdCBhbl9vYmplY3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAoJICBhbl9vYmplY3QgPSBHQ19NQUxMT0MoIEVYVEVOREVEX1BBSVJf U0laRSApOyAgICAgICAgICAgICAgICAgICAgXAoJICBhbl9vYmplY3QtPmV4dGVuZGVkX3BhaXJf dC5oZWFkZXIgID0gTUFLRV9IRUFERVIoIFBBSVJfVFlQRSwwICk7XAoJICBhbl9vYmplY3QtPmV4 dGVuZGVkX3BhaXJfdC5jYXIgICAgID0gYTsgICAgICAgICAgICAgICAgICAgICAgICAgXAoJICBh bl9vYmplY3QtPmV4dGVuZGVkX3BhaXJfdC5jZHIgICAgID0gZDsgICAgICAgICAgICAgICAgICAg ICAgICAgXAoJICBhbl9vYmplY3QtPmV4dGVuZGVkX3BhaXJfdC5jZXIgICAgID0gZTsgICAgICAg ICAgICAgICAgICAgICAgICAgXAoJICBhbl9vYmplY3QtPmV4dGVuZGVkX3BhaXJfdC5laGVhZGVy ID0gQklOVCggRVhURU5ERURfUEFJUl9UWVBFICk7XAoJICBCR0xfSEVBUF9ERUJVR19NQVJLX09C SiggQlBBSVIoIGFuX29iamVjdCApICk7IH0gKQojZWxzZQojICAgZGVmaW5lIE1BS0VfRVhURU5E RURfUEFJUiggYSwgZCwgZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg ICAgKCAgYW5fb2JqZWN0ID0gR0NfTUFMTE9DKCBFWFRFTkRFRF9QQUlSX1NJWkUgKSwgICAgICAg ICAgICAgICAgICAgICBcCgkgYW5fb2JqZWN0LT5leHRlbmRlZF9wYWlyX3QuaGVhZGVyICA9IE1B S0VfSEVBREVSKCBQQUlSX1RZUEUsMCApLCBcCgkgYW5fb2JqZWN0LT5leHRlbmRlZF9wYWlyX3Qu Y2FyICAgICA9IGEsICAgICAgICAgICAgICAgICAgICAgICAgICBcCgkgYW5fb2JqZWN0LT5leHRl bmRlZF9wYWlyX3QuY2RyICAgICA9IGQsICAgICAgICAgICAgICAgICAgICAgICAgICBcCgkgYW5f b2JqZWN0LT5leHRlbmRlZF9wYWlyX3QuY2VyICAgICA9IGUsICAgICAgICAgICAgICAgICAgICAg ICAgICBcCgkgYW5fb2JqZWN0LT5leHRlbmRlZF9wYWlyX3QuZWhlYWRlciA9IEJJTlQoIEVYVEVO REVEX1BBSVJfVFlQRSApLCBcCiAgICAgICAgIEJHTF9IRUFQX0RFQlVHX01BUktfT0JKKCBCUEFJ UiggYW5fb2JqZWN0ICkgKSApCiNlbmRpZgojZW5kaWYKCiNpZiggIShkZWZpbmVkKCBUQUdfUEFJ UiApICkgKQojICAgZGVmaW5lIFBBSVJQKCBjICkgKFBPSU5URVJQKCBjICkgJiYgKFRZUEUoIGMg KSA9PSBQQUlSX1RZUEUpKQojZWxzZQojICAgaWYoICFUQUdfUEFJUiApCiMgICAgICBkZWZpbmUg UEFJUlAoIGMgKSAoKGMgJiYgKCgoKGxvbmcpYykgJiBUQUdfTUFTSykgPT0gVEFHX1BBSVIpKSkK I2Vsc2UKIyAgICAgIGRlZmluZSBQQUlSUCggYyApICgoKChsb25nKWMpICYgVEFHX01BU0spID09 IFRBR19QQUlSKQojICAgZW5kaWYKI2VuZGlmCgojaWYoIFRIRV9HQyA9PSBCT0VITV9HQyApCiMg ICBkZWZpbmUgRVhURU5ERURfUEFJUlAoIGMgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAogICAgICAoIFBBSVJQKCBjICkgJiYgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAoKChsb25nKUdDX3NpemUoIEJQ QUlSKCBjICkgKSkgPj0gRVhURU5ERURfUEFJUl9TSVpFKSAmJiAgICAgICBcCiAgICAgICAgKEVQ QUlSKCBjICkuZWhlYWRlciA9PSBCSU5UKCBFWFRFTkRFRF9QQUlSX1RZUEUgKSApICkKI2Vsc2UK IyAgIGlmKCBUSEVfR0MgPT0gTk9fR0MgKQojICAgICAgZGVmaW5lIEVYVEVOREVEX1BBSVJQKCBj ICkgKDApCiMgICBlbHNlCiMgICAgICBkZWZpbmUgRVhURU5ERURfUEFJUlAoIGMgKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAoIFBBSVJQKCBjICkgJiYg KEVQQUlSKCBjICkuZWhlYWRlciA9PSBCSU5UKCBFWFRFTkRFRF9QQUlSX1RZUEUgKSApICkKIyAg IGVuZGlmCiNlbmRpZgoKI2RlZmluZSBOVUxMUCggYyApICgobG9uZykoYykgPT0gKGxvbmcpQk5J TCkKCiNkZWZpbmUgQ0FSKCBjICkgICAgICAgIChQQUlSKCBjICkuY2FyKQojZGVmaW5lIENEUigg YyApICAgICAgICAoUEFJUiggYyApLmNkcikKI2RlZmluZSBDRVIoIGMgKSAgICAgICAgKEVQQUlS KCBjICkuY2VyKQoKI2RlZmluZSBTRVRfQ0FSKCBjLCB2ICkgKChDQVIoYykgPSB2KSwgQlVOU1BF QykKI2RlZmluZSBTRVRfQ0RSKCBjLCB2ICkgKChDRFIoYykgPSB2KSwgQlVOU1BFQykKI2RlZmlu ZSBTRVRfQ0VSKCBjLCB2ICkgKChDRVIoYykgPSB2KSwgQlVOU1BFQykKCi8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ki8KLyogICAgU3RyaW5ncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNpZiggIShkZWZpbmVkKCBUQUdf U1RSSU5HICkgKSApCiMgICBkZWZpbmUgU1RSSU5HUCggYyApIChQT0lOVEVSUCggYyApICYmIChU WVBFKCBjICkgPT0gU1RSSU5HX1RZUEUpKQojZWxzZQojICAgZGVmaW5lIFNUUklOR1AoIGMgKSAo KGMgJiYgKCgoKGxvbmcpYykmVEFHX01BU0spID09IFRBR19TVFJJTkcpKSkKI2VuZGlmCgojZGVm aW5lIFNUUklORyggbyApICAoQ1NUUklORyggbyApLT5zdHJpbmdfdCkKCiNkZWZpbmUgU1RSSU5H X1NJWkUgKHNpemVvZiggc3RydWN0IHN0cmluZyApKQoKI2RlZmluZSBTVFJJTkdfTEVOR1RIKCBz ICkgU1RSSU5HKCBzICkubGVuZ3RoCiNkZWZpbmUgSU5WRVJTRV9TVFJJTkdfTEVOR1RIKCBzICkg XAogICAoKFNUUklOR19MRU5HVEgoIHMgKSA9ICgtU1RSSU5HX0xFTkdUSCggcyApKSksIEJVTlNQ RUMpCiAgIAojZGVmaW5lIE1BUktfSU5URVhUX1NUUklORyggcyApIFwKICAgSU5WRVJTRV9TVFJJ TkdfTEVOR1RIKCBzICkKI2RlZmluZSBVTk1BUktfSU5URVhUX1NUUklORyggcyApIFwKICAgSU5W RVJTRV9TVFJJTkdfTEVOR1RIKCBzICkKI2RlZmluZSBJTlRFWFRfU1RSSU5HX01BUktFRF9QKCBz ICkgXAogICAoU1RSSU5HX0xFTkdUSCggcyApIDwgMCkKCiNkZWZpbmUgQlNUUklOR19UT19TVFJJ TkcoIHMgKSAoKGNoYXIgKikoJihTVFJJTkcoIHMgKS5jaGFyMCkpKQoKI2RlZmluZSBTVFJJTkdf UkVGKCB2LCBpICkgKEJTVFJJTkdfVE9fU1RSSU5HKCB2IClbIGkgXSkKI2RlZmluZSBTVFJJTkdf U0VUKCBzLCBpLCBjICkgKFNUUklOR19SRUYoIHMsIGkgKSA9IGMsIEJVTlNQRUMpCiNkZWZpbmUg U1RSSU5HX1BUUl9OVUxMKCBfcCApIChfcCA9PSAwKQogICAKLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAg ICBVQ1MtMiBjaGFyYWN0ZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2RlZmluZSBVQ1MyX0lTT0xBVElOMVAoIGNo ICkgKChjaCkgPCAodWNzMl90KTI1NikKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgVUNTLTIgc3Ry aW5ncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq LwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSovCiNkZWZpbmUgVUNTMl9TVFJJTkdQKCBjICkgKFBPSU5URVJQKCBj ICkgJiYgKFRZUEUoIGMgKSA9PSBVQ1MyX1NUUklOR19UWVBFKSkKCiNkZWZpbmUgVUNTMl9TVFJJ TkcoIG8gKSAgKENVQ1MyU1RSSU5HKCBvICktPnVjczJfc3RyaW5nX3QpCgojZGVmaW5lIFVDUzJf U1RSSU5HX1NJWkUgKHNpemVvZiggc3RydWN0IHVjczJfc3RyaW5nICkpCgojZGVmaW5lIFVDUzJf U1RSSU5HX0xFTkdUSCggcyApIFVDUzJfU1RSSU5HKCBzICkubGVuZ3RoCiNkZWZpbmUgSU5WRVJT RV9VQ1MyX1NUUklOR19MRU5HVEgoIHMgKSBcCiAgICgoVUNTMl9TVFJJTkdfTEVOR1RIKCBzICkg PSAoLVVDUzJfU1RSSU5HX0xFTkdUSCggcyApKSksIEJVTlNQRUMpCgojZGVmaW5lIE1BUktfSU5U RVhUX1VDUzJfU1RSSU5HKCBzICkgXAogICBJTlZFUlNFX1VDUzJfU1RSSU5HX0xFTkdUSCggcyAp CiNkZWZpbmUgVU5NQVJLX0lOVEVYVF9VQ1MyX1NUUklORyggcyApIFwKICAgSU5WRVJTRV9VQ1My X1NUUklOR19MRU5HVEgoIHMgKQojZGVmaW5lIElOVEVYVF9VQ1MyX1NUUklOR19NQVJLRURfUCgg cyApIFwKICAgKFVDUzJfU1RSSU5HX0xFTkdUSCggcyApIDwgMCkKCiNkZWZpbmUgQlVDUzJfU1RS SU5HX1RPX1VDUzJfU1RSSU5HKCBzICkgKCYoVUNTMl9TVFJJTkcoIHMgKS5jaGFyMCkpCgojZGVm aW5lIFVDUzJfU1RSSU5HX1JFRiggdiwgaSApIChCVUNTMl9TVFJJTkdfVE9fVUNTMl9TVFJJTkco IHYgKVsgaSBdKQojZGVmaW5lIFVDUzJfU1RSSU5HX1NFVCggcywgaSwgYyApIChVQ1MyX1NUUklO R19SRUYoIHMsIGkgKSA9IGMsIEJVTlNQRUMpCgojZGVmaW5lIElOVF9UT19VQ1MyKCBpICkgKCh1 Y3MyX3QpaSkKICAgCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgUHJvY2VkdXJlcyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSovCiNkZWZpbmUgUFJPQ0VEVVJFX1NJWkUgKHNpemVvZiggc3RydWN0IHByb2NlZHVyZSAp KQoKI2RlZmluZSBQUk9DRURVUkUoIG8gKSBDUkVGKCBvICktPnByb2NlZHVyZV90CgojZGVmaW5l IFBST0NFRFVSRV9FTlRSWSggZnVuICkgKG9ial90KShQUk9DRURVUkUoIGZ1biApLmVudHJ5KQoj ZGVmaW5lIFBST0NFRFVSRV9WQV9FTlRSWSggZnVuICkgKG9ial90KShQUk9DRURVUkUoIGZ1biAp LnZhX2VudHJ5KQoKI2RlZmluZSBQUk9DRURVUkVQKCBmdW4gKSBcCiAgIChQT0lOVEVSUCggZnVu ICkgJiYgKFRZUEUoIGZ1biApID09IFBST0NFRFVSRV9UWVBFKSkKCiNkZWZpbmUgUFJPQ0VEVVJF X0FSSVRZKCBmdW4gKSAoUFJPQ0VEVVJFKCBmdW4gKS5hcml0eSkKCiNkZWZpbmUgVkFfUFJPQ0VE VVJFUCggZnVuICkgKCBQUk9DRURVUkVfQVJJVFkoIGZ1biApIDwgMCApCiAgIAojZGVmaW5lIFBS T0NFRFVSRV9DT1JSRUNUX0FSSVRZUCggZnVuLCBudW0gKSAgICAgICAgICAgXAogICAgICAgICgg KFBST0NFRFVSRV9BUklUWSggZnVuICkgPT0gbnVtKSB8fCAgICAgICAgICAgXAoJICAoVkFfUFJP Q0VEVVJFUCggZnVuICkgJiYgICAgICAgICAgICAgICAgICAgICBcCgkgICAoKC1udW0gLSAxKSA8 PSAoUFJPQ0VEVVJFX0FSSVRZKCBmdW4gKSkpKSApCgkJICAKI2RlZmluZSBQUk9DRURVUkVfRU5W KCBwICkgKCYoUFJPQ0VEVVJFKCBwICkub2JqMCkpCgojZGVmaW5lIFBST0NFRFVSRV9SRUYoIHAs IGkgKSAgICAoUFJPQ0VEVVJFX0VOViggcCApKVsgaSBdCiNkZWZpbmUgUFJPQ0VEVVJFX1NFVCgg cCwgaSwgbyApIChQUk9DRURVUkVfUkVGKCBwLCBpICkgPSBvLCBCVU5TUEVDKQoKLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0qLwovKiAgICBMaWdodCBwcm9jZWR1cmVzICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2RlZmluZSBQUk9DRURV UkVfTF9TSVpFIChzaXplb2YoIHN0cnVjdCBwcm9jZWR1cmVfbGlnaHQgKSkKCiNkZWZpbmUgUFJP Q0VEVVJFX0woIF9vXyApIChDTElHSFQoIF9vXyApLT5wcm9jZWR1cmVfbGlnaHRfdCkKCiNkZWZp bmUgUFJPQ0VEVVJFX0xfRU5UUlkoIGZ1biApIChvYmpfdCkoUFJPQ0VEVVJFX0woIGZ1biApLmVu dHJ5KQoKI2RlZmluZSBQUk9DRURVUkVfTF9FTlYoIGZ1biApICgmKFBST0NFRFVSRV9MKCBmdW4g KS5vYmowKSkKCiNkZWZpbmUgUFJPQ0VEVVJFX0xfUkVGKCBwLCBfaSApICAgIFBST0NFRFVSRV9M X0VOViggcCApWyBfaSBdIAojZGVmaW5lIFBST0NFRFVSRV9MX1NFVCggcCwgX2ksIG8gKSAoUFJP Q0VEVVJFX0xfUkVGKCBwLCBfaSApID0gbywgQlVOU1BFQykKCiNpZiggZGVmaW5lZCggX19HTlVD X18gKSApCiMgICBkZWZpbmUgTUFLRV9MX1BST0NFRFVSRV9BTExPQyggQUxMT0MsIF9lbnRyeSwg X3NpemUgKSAgICAgICAgICAgICAgICAgICAgXAogICAgICAoIHsgb2JqX3QgYW5fb2JqZWN0OyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKCSAgYW5f b2JqZWN0ID0gQUxMT0MoIFBST0NFRFVSRV9MX1NJWkUgKyAoKF9zaXplLTEpICogT0JKX1NJWkUp ICk7ICAgIFwKCSAgKGFuX29iamVjdC0+cHJvY2VkdXJlX2xpZ2h0X3QpLmVudHJ5ID0gX2VudHJ5 OyAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIEJHTF9IRUFQX0RFQlVHX01BUktfT0JK KCBCTElHSFQoIGFuX29iamVjdCApICk7IH0gKQojZWxzZQojICAgZGVmaW5lIE1BS0VfTF9QUk9D RURVUkVfQUxMT0MoIEFMTE9DLCBfZW50cnksIF9zaXplICkgICAgICAgICAgICAgICAgICAgIFwK ICAgICAgKCAgIGFuX29iamVjdCA9IEFMTE9DKCBQUk9DRURVUkVfTF9TSVpFICsgKChfc2l6ZS0x KSAqIE9CSl9TSVpFKSApLCAgICBcCgkgIChhbl9vYmplY3QtPnByb2NlZHVyZV9saWdodF90KS5l bnRyeSA9IF9lbnRyeSwgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICBCR0xfSEVBUF9E RUJVR19NQVJLX09CSiggQkxJR0hUKCBhbl9vYmplY3QgKSApICkKI2VuZGlmCgojZGVmaW5lIE1B S0VfTF9QUk9DRURVUkUoIF9lbnRyeSwgX3NpemUgKSAgIFwKICAgTUFLRV9MX1BST0NFRFVSRV9B TExPQyggR0NfTUFMTE9DLCBfZW50cnksIF9zaXplICkKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAg RXh0cmEtbGlnaHQgcHJvY2VkdXJlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNkZWZpbmUgTUFLRV9FTF9QUk9DRURVUkUoIHNp emUgKSAgIEdDX01BTExPQyggc2l6ZSAqIE9CSl9TSVpFICkKCiNkZWZpbmUgUFJPQ0VEVVJFX0VM X1JFRiggcCwgaSApICAgICgob2JqX3QgKilwKVsgaSBdCiNkZWZpbmUgUFJPQ0VEVVJFX0VMX1NF VCggcCwgaSwgbyApIChQUk9DRURVUkVfRUxfUkVGKCBwLCBpICkgPSBvLCBCVU5TUEVDKQoKCiNk ZWZpbmUgTUFLRV9FTF9QUk9DRURVUkVfMSggc2l6ZSApICAgQlVOU1BFQwoKI2RlZmluZSBQUk9D RURVUkVfMV9FTF9SRUYoIHAsIGkgKSAgICBwCiNkZWZpbmUgUFJPQ0VEVVJFXzFfRUxfU0VUKCBw LCBpLCBvICkgKFBST0NFRFVSRV8xX0VMX1JFRiggcCwgaSApID0gbywgQlVOU1BFQykKCi8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKi8KLyogICAgR2xvYmFsIHBvcnRzICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCmV4dGVybiBvYmpf dCAoKmJnbF9nZXRfY3VycmVudF9vdXRwdXRfcG9ydCkoKTsKZXh0ZXJuIG9ial90ICgqYmdsX3Nl dF9jdXJyZW50X291dHB1dF9wb3J0KSggb2JqX3QgKTsKZXh0ZXJuIG9ial90ICgqYmdsX2dldF9j dXJyZW50X2Vycm9yX3BvcnQpKCk7CmV4dGVybiBvYmpfdCAoKmJnbF9zZXRfY3VycmVudF9lcnJv cl9wb3J0KSggb2JqX3QgKTsKZXh0ZXJuIG9ial90ICgqYmdsX2dldF9jdXJyZW50X2lucHV0X3Bv cnQpKCk7CmV4dGVybiBvYmpfdCAoKmJnbF9zZXRfY3VycmVudF9pbnB1dF9wb3J0KSggb2JqX3Qg KTsKICAgCiNkZWZpbmUgR0VUX0NVUlJFTlRfT1VUUFVUX1BPUlQoKSBiZ2xfZ2V0X2N1cnJlbnRf b3V0cHV0X3BvcnQoKQojZGVmaW5lIFNFVF9DVVJSRU5UX09VVFBVVF9QT1JUKCBfcCApIChiZ2xf c2V0X2N1cnJlbnRfb3V0cHV0X3BvcnQoX3ApKQoKI2RlZmluZSBHRVRfQ1VSUkVOVF9JTlBVVF9Q T1JUKCkgYmdsX2dldF9jdXJyZW50X2lucHV0X3BvcnQoKQojZGVmaW5lIFNFVF9DVVJSRU5UX0lO UFVUX1BPUlQoIF9wICkgKGJnbF9zZXRfY3VycmVudF9pbnB1dF9wb3J0IChfcCkpCgojZGVmaW5l IEdFVF9DVVJSRU5UX0VSUk9SX1BPUlQoKSBiZ2xfZ2V0X2N1cnJlbnRfZXJyb3JfcG9ydCgpCiNk ZWZpbmUgU0VUX0NVUlJFTlRfRVJST1JfUE9SVCggX3AgKSAoYmdsX3NldF9jdXJyZW50X2Vycm9y X3BvcnQoX3ApKQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBPdXRwdXQtcG9ydHMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKi8KI2RlZmluZSBPVVRQVVRfUE9SVF9TSVpFIChzaXplb2YoIHN0cnVjdCBvdXRwdXRfcG9y dCApKQoKI2RlZmluZSBPVVRQVVRfUE9SVCggbyApIENSRUYoIG8gKS0+b3V0cHV0X3BvcnRfdAoK I2RlZmluZSBPVVRQVVRfUE9SVFAoIG8gKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCiAgICggUE9JTlRFUlAoIG8gKSAmJiAoIChUWVBFKCBvICkgPT0gT1VUUFVUX1BPUlRfVFlQ RSkgfHwgXAoJCSAgICAgICAgKFRZUEUoIG8gKSA9PSBPVVRQVVRfU1RSSU5HX1BPUlRfVFlQRSkg KSApCgojZGVmaW5lIEZMVVNIX09VVFBVVF9QT1JUKCBvICkgIFwKICAgKCBPVVRQVVRfU1RSSU5H X1BPUlRQKCBvICkgPyBcCgkgIHN0cnBvcnRfZmx1c2goIG8gKSA6IChmZmx1c2goIE9VVFBVVF9Q T1JUKCBvICkuZmlsZSApLCBvKSApCgojZGVmaW5lIE9VVFBVVF9QT1JUX1RPX0ZJTEUoIG8gKSBc CiAgICggT1VUUFVUX1NUUklOR19QT1JUUCggbyApID8gXAoJICBGQUlMVVJFKCBzdHJpbmdfdG9f YnN0cmluZyggIm91dHB1dC1wb3J0LXRvLWZpbGUiICksIFwKCQkgICBzdHJpbmdfdG9fYnN0cmlu ZyggImFyZ3VtZW50IGNhbid0IGJlIGEgc3RyaW5nIHBvcnQiKSwgXAoJCSAgIG8gKSwgXAoJICBz dGRvdXQgXAoJICA6IE9VVFBVVF9QT1JUKCBvICkuZmlsZSApCgojZGVmaW5lIEZJTEVfVE9fT1VU UFVUX1BPUlQoIGYgKSBcCiAgIChtYWtlX291dHB1dF9wb3J0KCAiPGMtcG9ydD4iLCBmLCBLSU5E T0ZfRklMRSkpCgojZGVmaW5lIEJHTF9PVVRQVVRfQ0hBUiggcCwgYyApIFwKICAgKGZwdXRjKCAo YyksIEJJTkFSWV9QT1JUKCAocCkgKS5maWxlICksIEJVTlNQRUMpCgojZGVmaW5lIEJHTF9JTlBV VF9DSEFSKCBwICkgXAogICAoZmdldGMoIEJJTkFSWV9QT1JUKCAocCkgKS5maWxlKSkKCiNkZWZp bmUgQkdMX0lOVF9FT0ZQKCBpICkgXAogICAoKGkpID09IEVPRikKICAgCi8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ki8KLyogICAgTGVzIE9VVFBVVF9TVFJJTkdfUE9SVHMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNkZWZpbmUgT1VUUFVUX1NUUklO R19QT1JUX1NJWkUgKHNpemVvZiggc3RydWN0IG91dHB1dF9zdHJpbmdfcG9ydCApKQoKI2RlZmlu ZSBPVVRQVVRfU1RSSU5HX1BPUlQoIG8gKSBDUkVGKCBvICktPm91dHB1dF9zdHJpbmdfcG9ydF90 CgojZGVmaW5lIE9VVFBVVF9TVFJJTkdfUE9SVFAoIG8gKSAoIFRZUEUoIG8gKSA9PSBPVVRQVVRf U1RSSU5HX1BPUlRfVFlQRSApCgojZGVmaW5lIE9VVFBVVF9TVFJJTkdfUE9SVF9CVUZGRVJfU0la RSAxMDI0CgojZGVmaW5lIEVORF9PRl9TVFJJTkdfUE9SVFAoIG8gKSBcCiAgICggT1VUUFVUX1NU UklOR19QT1JUKCBvICkub2Zmc2V0ID09IE9VVFBVVF9TVFJJTkdfUE9SVCggbyApLnNpemUgKQoK LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0qLwovKiAgICBCaW5hcnkgcG9ydHMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2RlZmlu ZSBCSU5BUllfUE9SVF9TSVpFIChzaXplb2YoIHN0cnVjdCBiaW5hcnlfcG9ydCApKQoKI2RlZmlu ZSBCSU5BUllfUE9SVCggbyApIENSRUYoIG8gKS0+YmluYXJ5X3BvcnRfdAoKI2RlZmluZSBCSU5B UllfUE9SVFAoIG8gKSBcCiAgICggUE9JTlRFUlAoIG8gKSAmJiAoVFlQRSggbyApID09IEJJTkFS WV9QT1JUX1RZUEUpICkKCiNkZWZpbmUgQklOQVJZX1BPUlRfSU4gICAoKGJvb2xfdCkwKQojZGVm aW5lIEJJTkFSWV9QT1JUX09VVCAgKChib29sX3QpMSkKCiNkZWZpbmUgQklOQVJZX1BPUlRfSU5Q KCBwICkgKEJJTkFSWV9QT1JUKCBvICkuaW8gPT0gQklOQVJZX1BPUlRfSU4pCgojZGVmaW5lIEJJ TkFSWV9QT1JUX1RPX0ZJTEUoIHAgKSAoQklOQVJZX1BPUlQoIHAgKS5maWxlKQoKLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0qLwovKiAgICBSR0MgcG9ydHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2RlZmluZSBLSU5ET0Zf RklMRSAgICAgQklOVCggMCApCiNkZWZpbmUgS0lORE9GX0NPTlNPTEUgIEJJTlQoIDEgKQojZGVm aW5lIEtJTkRPRl9TVFJJTkcgICBCSU5UKCAyICkKI2RlZmluZSBLSU5ET0ZfUElQRSAgICAgQklO VCggMyApCiNkZWZpbmUgS0lORE9GX1NPQ0tFVCAgIEJJTlQoIDQgKQojZGVmaW5lIEtJTkRPRl9D TE9TRUQgICBCSU5UKCA2ICkKI2RlZmluZSBLSU5ET0ZfUFJPQ1BJUEUgQklOVCggNyApCgojZGVm aW5lIElOUFVUX1BPUlRfU0laRSAoc2l6ZW9mKCBzdHJ1Y3QgaW5wdXRfcG9ydCApKQoKI2RlZmlu ZSBJTlBVVF9QT1JUKCBvICkgQ1JFRiggbyApLT5pbnB1dF9wb3J0X3QKCiNkZWZpbmUgSU5QVVRf UE9SVFAoIG8gKSAoUE9JTlRFUlAoIG8gKSAmJiAoVFlQRSggbyApID09IElOUFVUX1BPUlRfVFlQ RSkpCgojZGVmaW5lIEVPRl9PQkpFQ1RQKCBvICkgKCBvID09IEJFT0YgKQoKI2RlZmluZSBJTlBV VF9QT1JUX05BTUUoIG8gKSAoSU5QVVRfUE9SVCggbyApLm5hbWUpCgojZGVmaW5lIElOUFVUX1BP UlRfRklMRVBPUyggbyApIChJTlBVVF9QT1JUKCBvICkuZmlsZXBvcykKCiNkZWZpbmUgSU5QVVRf UE9SVF9PTl9GSUxFUCggbyApIChJTlBVVF9QT1JUKCBvICkua2luZG9mID09IEtJTkRPRl9GSUxF KQoKI2RlZmluZSBJTlBVVF9QT1JUX09OX1NUUklOR1AoIG8gKSAoSU5QVVRfUE9SVCggbyApLmtp bmRvZiA9PSBLSU5ET0ZfU1RSSU5HKQoKI2RlZmluZSBJTlBVVF9QT1JUX0JVRlNJWiggbyApIChJ TlBVVF9QT1JUKCBvICkuYnVmc2l6KQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBSR0MgbWFjcm9z ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov Ci8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKi8KI2RlZmluZSBSR0NfREVCVUcgMgojdW5kZWYgUkdDX0RFQlVHCgoj aWYgZGVmaW5lZCggUkdDX0RFQlVHICkKIyAgIGluY2x1ZGUgPGFzc2VydC5oPgojZWxzZQojICAg ZGVmaW5lIGFzc2VydCggZXhwICkgOwojZW5kaWYKCiNkZWZpbmUgUkdDX0JVRkZFUiggcCApICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgKElOUFVU X1BPUlQoIHAgKS5idWZmZXIpCgojaWYgZGVmaW5lZCggUkdDX0RFQlVHICkgJiYgKFJHQ19ERUJV RyA+IDEpCiNkZWZpbmUgUkdDX0JVRkZFUl9HRVRfQ0hBUiggaSApICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKICAgKHByaW50ZiggImdldF9jaGFyOiAlZCAlY1xuIiwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoJICAgICh1bnNpZ25lZCBp bnQpKFJHQ19CVUZGRVIoIGkgKVsgSU5QVVRfUE9SVCggaSApLmZvcndhcmQgXSksIFwKCSAgICBS R0NfQlVGRkVSKCBpIClbIElOUFVUX1BPUlQoIGkgKS5mb3J3YXJkIF0gKSwgICAgICAgICAgICAg ICBcCiAgICh1bnNpZ25lZCBpbnQpKFJHQ19CVUZGRVIoIGkgKVsgSU5QVVRfUE9SVCggaSApLmZv cndhcmQrKyBdKSkKI2Vsc2UKI2RlZmluZSBSR0NfQlVGRkVSX0dFVF9DSEFSKCBpICkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAoKHVuc2lnbmVkIGludCkoUkdD X0JVRkZFUiggaSApWyBJTlBVVF9QT1JUKCBpICkuZm9yd2FyZCsrIF0pKQojZW5kaWYKCiNkZWZp bmUgUkdDX0JVRkZFUl9DSEFSQUNURVIoIGkgKSBcCiAgICgoY2hhcikoUkdDX0JVRkZFUiggaSAp WyBJTlBVVF9QT1JUKCBpICkubWF0Y2hzdGFydCBdKSkKICAgCiNkZWZpbmUgUkdDX1NUQVJUX01B VENIKCBwICkgXAogICAoSU5QVVRfUE9SVCggcCApLmZvcndhcmQgPSBcCiAgICAgSU5QVVRfUE9S VCggcCApLm1hdGNoc3RhcnQgPSBcCiAgICAgIElOUFVUX1BPUlQoIHAgKS5tYXRjaHN0b3ApCgoj ZGVmaW5lIFJHQ19TRVRfRklMRVBPUyggcCApIFwKICAgKElOUFVUX1BPUlQoIHAgKS5maWxlcG9z ICs9IFJHQ19CVUZGRVJfTEVOR1RIKCBwICkpCiAgIAojZGVmaW5lIFJHQ19TVE9QX01BVENIKCBw ICkgXAogICAoSU5QVVRfUE9SVCggcCApLm1hdGNoc3RvcCA9IElOUFVUX1BPUlQoIHAgKS5mb3J3 YXJkKQoKCiNpZiBkZWZpbmVkKCBSR0NfREVCVUcgKQojZGVmaW5lIFJHQ19CVUZGRVJfRU1QVFko IHAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIChhc3Nl cnQoIElOUFVUX1BPUlQoIHAgKS5mb3J3YXJkIDw9IElOUFVUX1BPUlQoIHAgKS5hYnVmc2l6KSwg ICAgICAgIFwKICAgIGFzc2VydCggSU5QVVRfUE9SVCggcCApLmFidWZzaXogPD0gSU5QVVRfUE9S VCggcCApLmJ1ZnNpeiksICAgICAgICAgXAogICAgcHJpbnRmKCAiUkdDX0JVRkZFUl9FTVBUWTog Zm9yd2FyZDogJWQgIGFidWZzaXo6ICVkICBtc3RhcnQ6ICVkICBtc3RvcDogJWQgLS0+ICVkXG4i ICwgICAgXAogICAgICAgICAgICBJTlBVVF9QT1JUKCBwICkuZm9yd2FyZCwgSU5QVVRfUE9SVCgg cCApLmFidWZzaXosICAgICAgICAgICBcCiAgICAgICAgICAgIElOUFVUX1BPUlQoIHAgKS5tYXRj aHN0YXJ0LCBJTlBVVF9QT1JUKCBwICkubWF0Y2hzdG9wLCAgICAgIFwKICAgICAgICAgICAgSU5Q VVRfUE9SVCggcCApLmZvcndhcmQgPT0gSU5QVVRfUE9SVCggcCApLmFidWZzaXopLCAgICAgICAg XAogICAgSU5QVVRfUE9SVCggcCApLmZvcndhcmQgPT0gSU5QVVRfUE9SVCggcCApLmFidWZzaXop CiNlbHNlCiNkZWZpbmUgUkdDX0JVRkZFUl9FTVBUWSggcCApICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKICAgKElOUFVUX1BPUlQoIHAgKS5mb3J3YXJkID09IElO UFVUX1BPUlQoIHAgKS5hYnVmc2l6KQojZW5kaWYKCiNkZWZpbmUgUkdDX01BVENIX0ZBSUwoIHAg KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgKElOUFVU X1BPUlQoIHAgKS5tYXRjaHN0YXJ0KyspCgojZGVmaW5lIFJHQ19GQUlMSU5HX0NIQVIoIHAgKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICgodW5zaWduZWQg aW50KShSR0NfQlVGRkVSKCBwIClbIElOUFVUX1BPUlQoIHAgKS5tYXRjaHN0YXJ0IF0pKQoKI2Rl ZmluZSBSR0NfQlVGRkVSX0xFTkdUSCggcCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAogICAoSU5QVVRfUE9SVCggcCApLm1hdGNoc3RvcCAtIElOUFVUX1BPUlQo IHAgKS5tYXRjaHN0YXJ0KQoKI2RlZmluZSBSR0NfQlVGRkVSX1BPU0lUSU9OKCBwICkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAoSU5QVVRfUE9SVCggcCApLmZv cndhcmQgLSBJTlBVVF9QT1JUKCBwICkubWF0Y2hzdGFydCkKCiNkZWZpbmUgUkdDX01BVENIU1RP UCggcCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg KElOUFVUX1BPUlQoIHAgKS5tYXRjaHN0b3ApCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qICAgIFZlY3Rv cnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0qLwojZGVmaW5lIFZFQ1RPUl9TSVpFIChzaXplb2YoIHN0cnVj dCB2ZWN0b3IgKSkKCi8qIExlIG5vbWJyZSBkZSBiaXQgYWNjb3JkZXMgYXV4IHRhZyBkZXMgdmVj dGV1cnMgKHBvdXIgY2FtbCkgKi8KI2RlZmluZSBWRUNUT1JfVEFHX05CX0JJVCA4CiNkZWZpbmUg VkVDVE9SX1RBR19TSVpFICgodW5zaWduZWQgaW50KSgxPDxWRUNUT1JfVEFHX05CX0JJVCkpCgoj ZGVmaW5lIFZFQ1RPUl9MRU5HVEhfU0hJRlQgKChzaXplb2YoIGludCApIDw8IDMpIC0gVkVDVE9S X1RBR19OQl9CSVQpCgojZGVmaW5lIFZFQ1RPUl9MRU5HVEhfTUFTSyBcCiAgICh+KHVuc2lnbmVk IGludCkoKFZFQ1RPUl9UQUdfU0laRSAtMSkgPDwgVkVDVE9SX0xFTkdUSF9TSElGVCkpCgojZGVm aW5lIFZFQ1RPUiggbyApIENWRUNUT1IoIG8gKS0+dmVjdG9yX3QKCiNpZiggIShkZWZpbmVkKCBU QUdfVkVDVE9SICkgKSApCiMgICBkZWZpbmUgVkVDVE9SUCggYyApIChQT0lOVEVSUCggYyApICYm IChUWVBFKCBjICkgPT0gVkVDVE9SX1RZUEUpKQojZWxzZQojICAgZGVmaW5lIFZFQ1RPUlAoIGMg KSAoKGMgJiYgKCgoKGxvbmcpYykmVEFHX01BU0spID09IFRBR19WRUNUT1IpKSkKI2VuZGlmCgoj ZGVmaW5lIFZFQ1RPUl9SRUYoIHYsIGkgKSAgICAoJihWRUNUT1IoIHYgKS5vYmowKSlbIGkgXQoj ZGVmaW5lIFZFQ1RPUl9TRVQoIHYsIGksIG8gKSAoVkVDVE9SX1JFRiggdiwgaSApID0gbywgQlVO U1BFQykKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgISEhIFdBUk5JTkcgISEhIFdBUk5JTkcgISEh IFdBUk5JTkcgISEhIFdBUk5JTkcgISEhIFdBUk5JTkcgISEhICAqLwovKiAgICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICov Ci8qICAgIFBvdXIgcG91dm9pciBjb2RlciB1bmUgaW5mb3JtYXRpb24gc3VwcGxlbWVudGFpcmUg c3VyIGxlcyAgICAgICAgKi8KLyogICAgdmVjdGV1cnMsIGplIGxpbWl0ZSBsZXVyIHRhaWxsZSBh IDJeMjIuIENlbGEgc2lnbmlmaWUgcXVlICAgICAgICAqLwovKiAgICBsJ2luZm8gcGV1dC1ldHJl IGNvZGVlIHN1ciBsZXMgOCBiaXRzIGRlIHBvaWRzIGZvcnQuICAgICAgICAgICAgICovCi8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKi8KI2RlZmluZSBWRUNUT1JfTEVOR1RIKCB2ICkgXAogICAoKHVuc2lnbmVkIGlu dClWRUNUT1IoIHYgKS5sZW5ndGggJiBWRUNUT1JfTEVOR1RIX01BU0spCgojZGVmaW5lIFZFQ1RP Ul9UQUdfU0VUKCB2LCB0YWcgKSAgICAgICAgICAgICAgICAgICAgICAgXAogICAgKCBWRUNUT1Io IHYgKS5sZW5ndGggPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICgodW5zaWdu ZWQgaW50KVZFQ1RPUl9MRU5HVEgoIHYgKSB8ICAgICAgICAgICAgICAgXAogICAgICAgKCgodW5z aWduZWQgaW50KSB0YWcpIDw8IFZFQ1RPUl9MRU5HVEhfU0hJRlQpKSwgXAogICAgICAgQlVOU1BF QyApCgojZGVmaW5lIFZFQ1RPUl9UQUcoIHYgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAooICgodW5zaWduZWQgaW50KShWRUNUT1IoIHYgKS5sZW5ndGgpICYgflZFQ1RPUl9MRU5H VEhfTUFTSykgPj4gVkVDVE9SX0xFTkdUSF9TSElGVCApCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qICAg IE51bWJlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwojZGVmaW5lIElOVEVHRVJQKCBvICkgKCgoKGxv bmcpbykgJiBUQUdfTUFTSykgPT0gVEFHX0lOVCkKCiNkZWZpbmUgUkVBTF9TSVpFICAoc2l6ZW9m KCBzdHJ1Y3QgcmVhbCApKQojaWYoICEoZGVmaW5lZCggVEFHX1JFQUwgKSApICkKIyAgIGRlZmlu ZSBSRUFMUCggYyApIChQT0lOVEVSUCggYyApICYmIChUWVBFKCBjICkgPT0gUkVBTF9UWVBFKSkK I2Vsc2UKIyAgIGRlZmluZSBSRUFMUCggYyApICgoYyAmJiAoKCgobG9uZyljKSZUQUdfTUFTSykg PT0gVEFHX1JFQUwpKSkKI2VuZGlmCgojZGVmaW5lIFJFQUwoIG8gKSAgQ1JFQUwoIG8gKS0+cmVh bF90CgojZGVmaW5lIE5FRyggeCApICgtIHgpCgojaWYoICFkZWZpbmVkKCBLRUVQX0JBQ0tfUFRS UyApICkKIyAgIGRlZmluZSBET1VCTEVfVE9fUkVBTCggZCApIChtYWtlX3JlYWwoIGQgKSkKI2Vs c2UKLyogd2hlbiBjb21waWxpbmcgZm9yIGRlYnVnLCBSRUFMIGFyZSBub3QgYWxsb2NhdGVkIHVz aW5nIEdDX01BTExPQ19BVE9NSUMgKi8KLyogaW4gb3JkZXIgdG8gbWFpbnRhaW4gdHlwZSBpbmZv cm1hdGlvbiBmb3IgcmVhbCBpbnNpZGUgdGhlIGRlYnVnZ2VyICAgICAgKi8KIyAgICAgaWYoIGRl ZmluZWQoIF9fR05VQ19fICkgKQojICAgICAgZGVmaW5lIERPVUJMRV9UT19SRUFMKCBkICkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAoeyBvYmpfdCBh bl9vYmplY3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CiAgICAgICAgICAgYW5fb2JqZWN0ID0gR0NfTUFMTE9DKCBSRUFMX1NJWkUgKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgIGFuX29iamVjdC0+cmVhbF90LmhlYWRlciA9 IE1BS0VfSEVBREVSKCBSRUFMX1RZUEUsIFJFQUxfU0laRSApO1wKCSAgIGFuX29iamVjdC0+cmVh bF90LnJlYWwgPSAoZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAg ICAgICBCR0xfSEVBUF9ERUJVR19NQVJLX09CSiggQlJFQUwoIGFuX29iamVjdCApICk7IH0pCiMg ICAgIGVsc2UKIyAgICAgIGRlZmluZSBNQUtFX1BBSVIoIGQgKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgKGFuX29iamVjdCA9IEdDX01BTExP QyggUkVBTF9TSVpFICksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAg IGFuX29iamVjdC0+cmVhbF90LmhlYWRlciA9IE1BS0VfSEVBREVSKCBSRUFMX1RZUEUsIFJFQUxf U0laRSApLFwKICAgICAgICAgICBhbl9vYmplY3QtPnJlYWxfdC5yZWFsID0gKGQpLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgQkdMX0hFQVBfREVCVUdfTUFS S19PQkooIEJSRUFMKCBhbl9vYmplY3QgKSApKQojICAgICBlbmRpZgojZW5kaWYKICAgCiNkZWZp bmUgUkVBTF9UT19ET1VCTEUoIHIgKSAoUkVBTCggciApLnJlYWwpCgojZGVmaW5lIEZMT0FUX1RP X1JFQUwoIGQgKSAoRE9VQkxFX1RPX1JFQUwoIChkb3VibGUpKGQpICkpCiNkZWZpbmUgUkVBTF9U T19GTE9BVCggciApICgoZmxvYXQpKFJFQUwoIHIgKS5yZWFsKSkKCiNkZWZpbmUgT0REUF9GWCgg eCApICAoIHggICYgMHgxICkKI2RlZmluZSBFVkVOUF9GWCggeCApICghT0REUF9GWCggeCApKQoK LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0qLwovKiAgICBMb25nIGxvbmcgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2RlZmlu ZSBMTE9OR19TSVpFIChzaXplb2YoIHN0cnVjdCBsbG9uZyApKQoKI2RlZmluZSBMTE9OR1AoIG8g KSAoUE9JTlRFUlAoIG8gKSAmJiAoVFlQRSggbyApID09IExMT05HX1RZUEUpKQoKI2RlZmluZSBM TE9ORyggbyApIENSRUYoIG8gKS0+bGxvbmdfdAoKI2lmKCBkZWZpbmVkKCBfX0dOVUNfXyApICkK IyAgIGRlZmluZSBMTE9OR19UT19CTExPTkcoIGwgKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAoIHsgb2JqX3QgYW5fb2JqZWN0OyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKCSAgICAgICBhbl9vYmplY3QgPSBH Q19NQUxMT0MoIExMT05HX1NJWkUgKTsgICAgICAgICAgICAgICAgICAgICAgXAoJICAgICAgIGFu X29iamVjdC0+bGxvbmdfdC5oZWFkZXIgPSBNQUtFX0hFQURFUiggTExPTkdfVFlQRSwgMCApOyBc CgkgICAgICAgYW5fb2JqZWN0LT5sbG9uZ190Lmxsb25nID0gbDsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKCSAgICAgICBCR0xfSEVBUF9ERUJVR19NQVJLX09CSiggQlJFRiggYW5fb2Jq ZWN0ICkgKTsgfSApCiNlbHNlCiMgICBkZWZpbmUgTExPTkdfVE9fQkxMT05HKCBsICkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAoICAgYW5fb2Jq ZWN0ID0gR0NfTUFMTE9DKCBMTE9OR19TSVpFICksICAgICAgICAgICAgICAgICAgICAgXAoJICAg ICAgIGFuX29iamVjdC0+bGxvbmdfdC5oZWFkZXIgPSBNQUtFX0hFQURFUiggTExPTkdfVFlQRSwg MCksIFwKCSAgICAgICBhbl9vYmplY3QtPmxsb25nX3QubGxvbmcgPSBsLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCgkgICAgICAgQkdMX0hFQVBfREVCVUdfTUFSS19PQkooIEJSRUYoIGFu X29iamVjdCApICkgKQojZW5kaWYKCSAgICAKI2RlZmluZSBCTExPTkdfVE9fTExPTkcoIGwgKSAo TExPTkcoIGwgKS5sbG9uZykKI2lmKCBIQVZFX0xPTkdMT05HICkgICAgICAKIyAgZGVmaW5lIExP TkdfVE9fTExPTkcoIGwgKSAoKGxvbmcgbG9uZylsKSAgIAojZWxzZQojICBkZWZpbmUgTE9OR19U T19MTE9ORyggbCApICgobG9uZylsKQojZW5kaWYKICAgCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAg ZXhhY3QgbG9uZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNkZWZpbmUgRUxPTkdfU0laRSAoc2l6ZW9mKCBz dHJ1Y3QgZWxvbmcgKSkKCiNkZWZpbmUgRUxPTkdQKCBvICkgKFBPSU5URVJQKCBvICkgJiYgKFRZ UEUoIG8gKSA9PSBFTE9OR19UWVBFKSkKCiNkZWZpbmUgRUxPTkcoIG8gKSBDUkVGKCBvICktPmVs b25nX3QKCiNpZiggZGVmaW5lZCggX19HTlVDX18gKSApCiMgICBkZWZpbmUgTE9OR19UT19CRUxP TkcoIGwgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg ICAgICAgKCB7IG9ial90IGFuX29iamVjdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCgkgICAgICAgYW5fb2JqZWN0ID0gR0NfTUFMTE9DKCBFTE9OR19TSVpFICk7 ICAgICAgICAgICAgICAgICAgICAgIFwKCSAgICAgICBhbl9vYmplY3QtPmVsb25nX3QuaGVhZGVy ID0gTUFLRV9IRUFERVIoIEVMT05HX1RZUEUsIDAgKTsgXAoJICAgICAgIGFuX29iamVjdC0+ZWxv bmdfdC5lbG9uZyA9IGw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCgkgICAgICAgQkdM X0hFQVBfREVCVUdfTUFSS19PQkooIEJSRUYoIGFuX29iamVjdCApICk7IH0gKQojZWxzZQojICAg ZGVmaW5lIExPTkdfVE9fQkVMT05HKCBsICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAogICAgICAgICAgICggICBhbl9vYmplY3QgPSBHQ19NQUxMT0MoIEVMT05H X1NJWkUgKSwgICAgICAgICAgICAgICAgICAgICAgXAoJICAgICAgIGFuX29iamVjdC0+ZWxvbmdf dC5oZWFkZXIgPSBNQUtFX0hFQURFUiggRUxPTkdfVFlQRSwgMCApLCBcCgkgICAgICAgYW5fb2Jq ZWN0LT5lbG9uZ190LmVsb25nID0gbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKCSAg ICAgICBCR0xfSEVBUF9ERUJVR19NQVJLX09CSiggQlJFRiggYW5fb2JqZWN0ICkgKSApCiNlbmRp ZgoJICAgIAojZGVmaW5lIEJFTE9OR19UT19MT05HKCBsICkgKEVMT05HKCBsICkuZWxvbmcpCgov Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSovCi8qICAgIFN5bWJvbHMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwojZGVmaW5l IFNZTUJPTFAoIG8gKSAoUE9JTlRFUlAoIG8gKSAmJiAoVFlQRSggbyApID09IFNZTUJPTF9UWVBF KSkKCiNkZWZpbmUgU1lNQk9MKCBvICkgIChDUkVGKCBvICktPnN5bWJvbF90KQogICAKI2RlZmlu ZSBTWU1CT0xfU0laRSAoc2l6ZW9mKCBzdHJ1Y3Qgc3ltYm9sICkpCgojZGVmaW5lIFNZTUJPTF9U T19TVFJJTkcoIG8gKSBTWU1CT0woIG8gKS5zdHJpbmcKCiNkZWZpbmUgR0VUX1NZTUJPTF9QTElT VCggbyApICAgIChTWU1CT0woIG8gKS5jdmFsKQoKI2RlZmluZSBTRVRfU1lNQk9MX1BMSVNUKCBv LCB2ICkgKEdFVF9TWU1CT0xfUExJU1QoIG8gKSA9IHYsIEJVTlNQRUMpCgojZGVmaW5lIFNZTUJP TF9DQVNFX1NFTlNUSVZFX1AoIG9iaiApICgob2JqKS0+aGVhZGVyICYgKDEgPDwgSEVBREVSX05C X0JJVCkpCiAgIAovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qICAgIEtleXdvcmRzICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKi8KI2RlZmluZSBLRVlXT1JEUCggbyApIChQT0lOVEVSUCggbyApICYmIChUWVBFKCBvICkg PT0gS0VZV09SRF9UWVBFKSkKCiNkZWZpbmUgS0VZV09SRCggbyApICAoQ1JFRiggbyApLT5zeW1i b2xfdCkKICAgCiNkZWZpbmUgS0VZV09SRF9TSVpFIChzaXplb2YoIHN0cnVjdCBzeW1ib2wgKSkK CiNkZWZpbmUgS0VZV09SRF9UT19TVFJJTkcoIG8gKSBLRVlXT1JEKCBvICkuc3RyaW5nCgojZGVm aW5lIEdFVF9LRVlXT1JEX1BMSVNUKCBvICkgICAoS0VZV09SRCggbyApLmN2YWwpCgojZGVmaW5l IFNFVF9LRVlXT1JEX1BMSVNUKCBvLCB2ICkgKEdFVF9LRVlXT1JEX1BMSVNUKCBvICkgPSB2LCBC VU5TUEVDKQogICAKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBTdHJ1Y3R1cmVzICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKi8KI2RlZmluZSBTVFJVQ1RfU0laRSAoc2l6ZW9mKCBzdHJ1Y3Qgc3RydWN0dXJlICkpCgoj ZGVmaW5lIFNUUlVDVCggbyApIENTVFJVQ1RVUkUoIG8gKS0+c3RydWN0X3QKCiNpZiggIShkZWZp bmVkKCBUQUdfU1RSVUNUVVJFICkgKSApCiMgICBkZWZpbmUgU1RSVUNUUCggYyApIChQT0lOVEVS UCggYyApICYmIChUWVBFKCBjICkgPT0gU1RSVUNUX1RZUEUpKQojZWxzZQojICAgZGVmaW5lIFNU UlVDVFAoIGMgKSAoKGMgJiYgKCgoKGxvbmcpYykmVEFHX01BU0spID09IFRBR19TVFJVQ1RVUkUp KSkKI2VuZGlmCgojZGVmaW5lIFNUUlVDVF9LRVkoIGMgKSAgICAgICAgU1RSVUNUKCBjICkua2V5 CiNkZWZpbmUgU1RSVUNUX0tFWV9TRVQoIGMsIGsgKSAoU1RSVUNUX0tFWSggYyApID0gaywgQlVO U1BFQykKCiNkZWZpbmUgU1RSVUNUX0xFTkdUSCggYyApIFNUUlVDVCggYyApLmxlbmd0aAogICAK I2RlZmluZSBTVFJVQ1RfUkVGKCBjLCBpICkgICAgKCYoU1RSVUNUKGMpLm9iajApKVsgaSBdCiNk ZWZpbmUgU1RSVUNUX1NFVCggYywgaSwgbyApIChTVFJVQ1RfUkVGKCBjLCBpICkgPSBvLCBCVU5T UEVDKQoKZXh0ZXJuIG9ial90IGZpbGxfc3RydWN0KCk7CmV4dGVybiBvYmpfdCBzZXRfc3RydWN0 KCk7CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qICAgIFR5cGVkIHN0cnVjdHVyZXMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoj ZGVmaW5lIFRTVFJVQ1RQKCBvICkgKFBPSU5URVJQKCBvICkgJiYgKFRZUEUoIG8gKSA9PSBUU1RS VUNUX1RZUEUpKQoKI2RlZmluZSBUU1RSVUNUX1NJWkUgKHNpemVvZiggc3RydWN0IHRzdHJ1Y3R1 cmUgKSkKCiNkZWZpbmUgVFNUUlVDVCggdHYgKSBDUkVGKCB0diApLT50c3RydWN0X3QKCiNkZWZp bmUgVFNUUlVDVF9JRCggYyApIFRTVFJVQ1QoIGMgKS5pZAojZGVmaW5lIFRTVFJVQ1RfVE9fVkVD VE9SKCBjICkgICAgICAgICAgICAgICBcCiAgIChQUk9DRURVUkVfRU5UUlkoIFRTVFJVQ1QoIGMg KS50b192ZWN0b3IgKVwKICAgICggVFNUUlVDVCggYyApLnRvX3ZlY3RvciwgYywgQkVPQSApKQoK I2RlZmluZSBUU1RSVUNUX1JFRiggX3Vfc3RydWN0LCBfc3QsIF91X3Nsb3QgKSAgICAgXAogICAg ICAoKChzdHJ1Y3QgeyBoZWFkZXJfdCAgICAgIGhlYWRlcjsgICAgICAgICAgICBcCgkJICBvYmpf dCAgICAgICAgIGlkOyAgICAgICAgICAgICAgICBcCgkJICBvYmpfdCAgICAgICAgIHRvX3Y7ICAg ICAgICAgICAgICBcCgkJICBfdV9zdHJ1Y3QgICAgIGR1bW15O30gKilDUkVGKCBfc3QgKSktPmR1 bW15Ll91X3Nsb3QpCgojZGVmaW5lIFRTVFJVQ1RfU0VUKCBfdV9zdHJ1Y3QsIF9zdCwgX3Vfc2xv dCwgX3YgKSAgICAgICAgICAgICAgICAgIFwKICAgICAgKFRTVFJVQ1RfUkVGKCBfdV9zdHJ1Y3Qs IF9zdCwgX3Vfc2xvdCApID0gX3YsICAgICAgICAgICAgICAgICBcCiAgICAgICBCVU5TUEVDICkK CQkgCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgY2hhcmFjdGVycyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNk ZWZpbmUgQ0hBUlAoIG8gKSBcCiAgICgoKGxvbmcpKG8pICYgKGxvbmcpKCgxIDw8IChDSEFSX1NI SUZUKSkgLTEpKSA9PSAobG9uZylCQ0hBUkgpCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qICAgIE91dHB1 dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0qLwojZGVmaW5lIFdSSVRFX0NIQVIoIGNfY2hhciwgcCApICAg ICAgICAgICAgICAgICAgICBcCiAgICggKE9VVFBVVF9TVFJJTkdfUE9SVFAoIHAgKSA/ICAgICAg ICAgICAgICAgICAgIFwKICAgICAoY2hhcilzdHJwdXRjKCBjX2NoYXIsIHAgKSA6ICAgICAgICAg ICAgICAgICAgXAogICAgIChjaGFyKWZwdXRjKCBjX2NoYXIsIE9VVFBVVF9QT1JUKCBwICkuZmls ZSApKSBcCiAgICAgLCBjX2NoYXIgKQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBVY3MyIGhhbmRs aW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov Ci8qICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gICAgKi8KLyogICAgVGFnZ2VkLCBhIFVDUzIgY2hhcmFjdGVyIGlzIHJlcHJl c2VudGVkIGFzOiAgICAgICAgICAgICAgICAgICAgICAqLwovKiAgICAgICAgICAgICstLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICovCi8qICAg ICAgICAgICAgfHh4eHh4eHh4eHh4eHh4eHh4fC4uLi4uLi4ufEJVQ1MySD8/fCAgICAgICAgICAg ICAgICAgICAgKi8KLyogICAgICAgICAgICArLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0rICAgICAgICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNkZWZpbmUgVUNT MlAoIG8gKSBcCiAgICgoKGxvbmcpKG8pICYgKGxvbmcpKCgxIDw8IChVQ1MyX1NISUZUKSkgLTEp KSA9PSAobG9uZylCVUNTMkgpCgoKI2RlZmluZSBCVUNTMiggbyApICgob2JqX3QpKChsb25nKUJV Q1MySCArIFwKCQkJICAgICgobG9uZykoKHVjczJfdCkobykgPDwgVUNTMl9TSElGVCkpKSkKI2Rl ZmluZSBDVUNTMiggbyApICgodWNzMl90KSgodW5zaWduZWQgbG9uZylvID4+IFVDUzJfU0hJRlQp KQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBUeXBlZCB2ZWN0b3JzICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2Rl ZmluZSBUVkVDVE9SUCggbyApIChQT0lOVEVSUCggbyApICYmIChUWVBFKCBvICkgPT0gVFZFQ1RP Ul9UWVBFKSkKCiNkZWZpbmUgVFZFQ1RPUl9TSVpFIChzaXplb2YoIHN0cnVjdCB0dmVjdG9yICkp CgojZGVmaW5lIFRWRUNUT1IoIHR2ICkgQ1JFRiggdHYgKS0+dHZlY3Rvcl90CgojZGVmaW5lIFRW RUNUT1JfSUQoIHR2ICkgICAgICAgICAgICAgVFZFQ1RPUiggdHYgKS5pZAojZGVmaW5lIFRWRUNU T1JfSURfU0VUKCB0diwgX2lkXyApICAgKFRWRUNUT1JfSUQoIHR2ICkgPSBfaWRfLCBCVU5TUEVD KQoKI2RlZmluZSBUVkVDVE9SX0xFTkdUSCggdHYgKSAgICAgICAgIFRWRUNUT1IoIHR2ICkubGVu Z3RoCiNkZWZpbmUgVFZFQ1RPUl9ERVNDUiggdHYgKSAgICAgICAgICBUVkVDVE9SKCB0diApLmRl c2NyCiNkZWZpbmUgVFZFQ1RPUl9ERVNDUl9TRVQoIHR2LCBfZF8gKSAoVFZFQ1RPUl9ERVNDUigg dHYgKSA9IF9kXywgQlVOU1BFQykKCiNkZWZpbmUgVFZFQ1RPUl9SRUYoIGl0LCB0diwgbyApICAg ICAgICAgICAgICAgICAgXAogICAgICAoJigoKHN0cnVjdCB7IGhlYWRlcl90ICAgICAgICBoZWFk ZXI7ICAgICAgIFwKCQkgICAgaW50ICAgICAgICAgICAgIGxlbmd0aDsgICAgICAgXAoJCSAgICBv YmpfdCAgICAgICAgICAgZGVzY3I7ICAgICAgICBcCgkJICAgIGl0ICAgICAgICAgICAgICBlbDA7 IH0gKikgICAgIFwKICAgICAgIENSRUYoIHR2ICkpLT5lbDApKVsgbyBdCgojZGVmaW5lIFRWRUNU T1JfU0VUKCBpdCwgdHYsIG8sIHYgKSAgICAgICAgICAgICAgIFwKICAgKFRWRUNUT1JfUkVGKCBp dCwgdHYsIG8gKSA9ICgoaXQpdiksICAgICAgICAgICBcCiAgICBCVU5TUEVDKQoKLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0qLwovKiAgICBgZXhpdCcgbWFjaGluZXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KZXh0ZXJuIG9ial90IF9l eGl0X3ZhbHVlXzsKCiNkZWZpbmUgU0VUX0VYSVQoIGV4aXQgKSAgICAgICBTRVRKTVAoIGptcGJ1 ZiApCiNkZWZpbmUgSlVNUF9FWElUKCBleGl0LCB2YWwgKSBfZXhpdF92YWx1ZV8gPSB2YWwsIExP TkdKTVAoICgodm9pZCAqKWV4aXQpLCAxICkKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgdGhlIGBi aW5kLWV4aXQnIGxpbmtpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSovCnN0cnVjdCBleGl0ZCB7CiAgIG9ial90ICAgICAgICAgZXhp dDsKICAgYm9vbF90ICAgICAgICB1c2VycDsKICAgb2JqX3QgICAgICAgICBzdGFtcDsKICAgc3Ry dWN0IGV4aXRkICpwcmV2Owp9OwoKZXh0ZXJuIG9ial90ICgqYmdsX2dldF9leGl0ZF90b3ApKCk7 CmV4dGVybiBvYmpfdCAoKmJnbF9zZXRfZXhpdGRfdG9wKSggb2JqX3QgKTsKZXh0ZXJuIG9ial90 IGJnbF9nZXRfZXhpdGRfc3RhbXAoKTsKICAgCiNkZWZpbmUgUFVTSF9FWElUKCBfeGl0LCBfc2Vy ICkgXAogICBzdHJ1Y3QgZXhpdGQgZXhpdGQ7IFwKICAgZXhpdGQuZXhpdCAgPSBfeGl0OyBcCiAg IGV4aXRkLnVzZXJwID0gX3NlcjsgXAogICBleGl0ZC5wcmV2ICA9ICgoc3RydWN0IGV4aXRkICop QkdMX0dFVF9FWElURF9UT1AoKSk7IFwKICAgZXhpdGQuc3RhbXAgPSBiZ2xfZ2V0X2V4aXRkX3N0 YW1wKCk7IFwKICAgYmdsX3NldF9leGl0ZF90b3AoIChvYmpfdCkoJmV4aXRkKSApOwoKI2RlZmlu ZSBQT1BfRVhJVCgpIFwKICAgQkdMX1NFVF9FWElURF9UT1AoIChvYmpfdCkoKChzdHJ1Y3QgZXhp dGQgKilCR0xfR0VUX0VYSVREX1RPUCgpKS0+cHJldikgKQoKI2RlZmluZSBFWElURF9UT19FWElU KCBwdHIgKSBcCiAgICgoc3RydWN0IGV4aXRkICopKHB0cikpLT5leGl0CgojZGVmaW5lIEVYSVRE X1VTRVJQKCBwdHIgKSBcCiAgICgoc3RydWN0IGV4aXRkICopKHB0cikpLT51c2VycAoKI2RlZmlu ZSBFWElURF9TVEFNUCggcHRyICkgXAogICAoKChzdHJ1Y3QgZXhpdGQgKikocHRyKSktPnN0YW1w KQoKI2RlZmluZSBCR0xfR0VUX0VYSVREX1RPUCgpIFwKICAgKGJnbF9nZXRfZXhpdGRfdG9wKCkp CiNkZWZpbmUgQkdMX1NFVF9FWElURF9UT1AoIHZhbCApIFwKICAgKGJnbF9zZXRfZXhpdGRfdG9w KHZhbCkpCiAgIAovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8qICAgIGBkeW5hbWljLXdpbmQnIGJlZm9yZSB0 aHVuayBsaW5raW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0qLwpzdHJ1Y3QgYmVmb3JlZCB7CiAgIG9ial90ICAgICAgICAgICBiZWZvcmU7CiAgIHN0cnVj dCBiZWZvcmVkICpwcmV2Owp9OwoKZXh0ZXJuIHN0cnVjdCBiZWZvcmVkICogKCpiZ2xfZ2V0X2Jl Zm9yZWRfdG9wKSgpOwpleHRlcm4gdm9pZCAoKmJnbF9zZXRfYmVmb3JlZF90b3ApKCBzdHJ1Y3Qg YmVmb3JlZCAqICk7CgojZGVmaW5lIFBVU0hfQkVGT1JFKCBfYmZyICkgXAogICBzdHJ1Y3QgYmVm b3JlZCBiZWZvcmVkOyBcCiAgIGJlZm9yZWQuYmVmb3JlID0gX2JmcjsgXAogICBiZWZvcmVkLnBy ZXYgPSBiZ2xfZ2V0X2JlZm9yZWRfdG9wKCk7IFwKICAgYmdsX3NldF9iZWZvcmVkX3RvcCggJmJl Zm9yZWQgKTsKCiNkZWZpbmUgUE9QX0JFRk9SRSgpIFwKICAgYmdsX3NldF9iZWZvcmVkX3RvcCgg YmdsX2dldF9iZWZvcmVkX3RvcCgpLT5wcmV2ICkKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgVGhl IGludGVycGVydGVyIGxvY2F0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNkZWZpbmUgX19FVk1FQU5JTkdfQUREUkVTUyggeCAp ICAgICAgICBcCiAgIEJSRUYoICZ4ICkKI2RlZmluZSBfX0VWTUVBTklOR19BRERSRVNTX1JFRigg eCApICAgIFwKICAgKCooKG9ial90ICopQ1JFRiggeCApKSkKI2RlZmluZSBfX0VWTUVBTklOR19B RERSRVNTX1NFVCggeCwgeSApIFwKICAgKF9fRVZNRUFOSU5HX0FERFJFU1NfUkVGKCB4ICkgPSAo b2JqX3QpeSwgQlVOU1BFQykKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgQ2FsbC9jYyBzdHVmZi4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSovCiNkZWZpbmUgU1RBQ0tfU0laRSAgKHNpemVvZiggc3RydWN0IHN0YWNrICkp CiAgIAojZGVmaW5lIFNUQUNLKCBfb18gKSBDUkVGKCBfb18gKS0+c3RhY2tfdAoKI2RlZmluZSBT VEFDS1AoIF9zXyApIChQT0lOVEVSUCggX3NfICkgJiYgKFRZUEUoIF9zXyApID09IFNUQUNLX1RZ UEUpKQoKI2RlZmluZSBNQUtFX1NUQUNLKCBfc2l6ZV8sIGF1eCApICAgICAgICAgICAgICAgICAg XAogICAoIGF1eCA9IEdDX01BTExPQyggU1RBQ0tfU0laRSArIChsb25nKV9zaXplXyApLCBcCiAg ICAgYXV4LT5oZWFkZXIgPSBNQUtFX0hFQURFUiggU1RBQ0tfVFlQRSwgMCApLCAgIFwKICAgICBC R0xfSEVBUF9ERUJVR19NQVJLX09CSiggQlJFRiggYXV4ICkgKSApCgpleHRlcm4gY2hhciAqKCpi Z2xfZ2V0X3N0YWNrX2JvdHRvbSkoKTsKZXh0ZXJuIHZvaWQgKCpiZ2xfc2V0X3N0YWNrX2JvdHRv bSkoIGNoYXIgKiApOwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBJbnRlcm4vZXh0ZXJuIG1hY3Jv cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKi8KI2lmKCBkZWZpbmVkKCBUQUdfU1RSSU5HICkgKQojICAgZGVmaW5lIFNUUklOR19N QVJLX09GRlNFVCAwCiNlbHNlCiMgICBkZWZpbmUgU1RSSU5HX01BUktfT0ZGU0VUIDEKI2VuZGlm CgojaWYoIGRlZmluZWQoIFRBR19TVFJVQ1RVUkUgKSApCiMgICBkZWZpbmUgU1RSVUNUVVJFX01B UktfT0ZGU0VUIDAKI2Vsc2UKIyAgIGRlZmluZSBTVFJVQ1RVUkVfTUFSS19PRkZTRVQgMQojZW5k aWYKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAgT2JqZWN0IG1hY3JvcyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiNk ZWZpbmUgQkdMX09CSkVDVFAoIF9vYmogKSBcCiAgICgoUE9JTlRFUlAoIF9vYmogKSAmJiAoVFlQ RSggX29iaiApID49IE9CSkVDVF9UWVBFKSkpCgojZGVmaW5lIEJHTF9PQkpFQ1RfQ0xBU1NfTlVN KCBfb2JqICkgXAogICAoVFlQRSggX29iaiApKQoKI2RlZmluZSBCR0xfT0JKRUNUX0NMQVNTX05V TV9TRVQoIF8xLCBfMiApIFwKICAgKCgob2JqX3QpQ1JFRihfMSkpLT5oZWFkZXIgPSBNQUtFX0hF QURFUiggXzIsIDAgKSwgQlVOU1BFQykKICAgCiNkZWZpbmUgQkdMX09CSkVDVF9XSURFTklORygg X29iaiApICAgICAgICAgIFwKICAgKCgob2JqZWN0X2JnbHQpKENSRUYoX29iaikpKS0+d2lkZW5p bmcpCgojZGVmaW5lIEJHTF9PQkpFQ1RfV0lERU5JTkdfU0VUKCBfb2JqLCBfc3RyICkgXAogICAo KCgoKG9iamVjdF9iZ2x0KShDUkVGKF9vYmopKSktPndpZGVuaW5nKSA9IF9zdHIpLCBCVU5TUEVD KQovKiBUbyBiZSByZW1vdmVkIGFmdGVyIGEgYm9vdHN0cmFwICovCiNkZWZpbmUgT0JKRUNUX1dJ REVOSU5HX1NFVCBCR0xfT0JKRUNUX1dJREVOSU5HX1NFVAoKLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAg ICBQcm9jZXNzIGhhbmRsaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2RlZmluZSBQUk9DRVNTUCggbyApICAgICAg ICAgICAgKFBPSU5URVJQKCBvICkgJiYgKFRZUEUoIG8gKSA9PSBQUk9DRVNTX1RZUEUpKQojZGVm aW5lIFBST0NFU1NfU0laRSAgICAgICAgICAgICAoc2l6ZW9mKCBzdHJ1Y3QgcHJvY2VzcyApKQoj ZGVmaW5lIFBST0NFU1MoIG8gKSAgICAgICAgICAgICAoQ1JFRiggbyApLT5wcm9jZXNzX3QpCiNk ZWZpbmUgUFJPQ0VTU19QSUQoIG8gKSAgICAgICAgIChQUk9DRVNTKCBvICkucGlkKQojZGVmaW5l IFBST0NFU1NfSU5QVVRfUE9SVCggbyApICAoUFJPQ0VTUyggbyApLnN0cmVhbVsgMCBdKQojZGVm aW5lIFBST0NFU1NfT1VUUFVUX1BPUlQoIG8gKSAoUFJPQ0VTUyggbyApLnN0cmVhbVsgMSBdKQoj ZGVmaW5lIFBST0NFU1NfRVJST1JfUE9SVCggbyApICAoUFJPQ0VTUyggbyApLnN0cmVhbVsgMiBd KQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBTb2NrZXQgaGFuZGxpbmcgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2Rl ZmluZSBTT0NLRVRQKCBvICkgICAgICAgICAgICAgKFBPSU5URVJQKCBvICkgJiYgKFRZUEUoIG8g KSA9PSBTT0NLRVRfVFlQRSkpCiNkZWZpbmUgU09DS0VUX1NJWkUgICAgICAgICAgICAgIChzaXpl b2YoIHN0cnVjdCBzb2NrZXQgKSkKI2RlZmluZSBTT0NLRVQoIG8gKSAgICAgICAgICAgICAgKENS RUYoIG8gKS0+c29ja2V0X3QpCiNkZWZpbmUgU09DS0VUX0hPU1ROQU1FKCBvICkgICAgIChTT0NL RVQoIG8gKS5ob3N0bmFtZSkKI2RlZmluZSBTT0NLRVRfSE9TVElQKCBvICkgICAgICAgKFNPQ0tF VCggbyApLmhvc3RpcCkKI2RlZmluZSBTT0NLRVRfUE9SVCggbyApICAgICAgICAgKFNPQ0tFVCgg byApLnBvcnRudW0pCiNkZWZpbmUgU09DS0VUX0lOUFVUKCBvICkgICAgICAgIChTT0NLRVQoIG8g KS5pbnB1dCkKI2RlZmluZSBTT0NLRVRfT1VUUFVUKCBvICkgICAgICAgKFNPQ0tFVCggbyApLm91 dHB1dCkKI2RlZmluZSBTT0NLRVRfRE9XTlAoIG8gKSAgICAgICAgKFNPQ0tFVCggbyApLmZkID09 IC0xKQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBvcGFxdWUgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K I2RlZmluZSBPUEFRVUVQKCBvICkgKFBPSU5URVJQKCBvICkgJiYgKFRZUEUoIG8gKSA9PSBPUEFR VUVfVFlQRSkpCiNkZWZpbmUgT1BBUVVFKCBmICkgQ1JFRiggZiApCgovKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov Ci8qICAgIEN1c3RvbSBtYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwojZGVmaW5lIENVU1RPTVAoIG8gKSAo UE9JTlRFUlAoIG8gKSAmJiAoVFlQRSggbyApID09IENVU1RPTV9UWVBFKSkKCiNkZWZpbmUgQ1VT VE9NX1NJWkUgKHNpemVvZiggc3RydWN0IGN1c3RvbSApKQojZGVmaW5lIENVU1RPTSggZiApIENS RUYoIGYgKS0+Y3VzdG9tX3QKCiNkZWZpbmUgQ1VTVE9NX0ZJTkFMKCBmICkgQ1VTVE9NKCBmICku ZmluYWwKI2RlZmluZSBDVVNUT01fU0VSSUFMKCBmICkgQ1VTVE9NKCBmICkuc2VyaWFsCiNkZWZp bmUgQ1VTVE9NX0VRVUFMKCBmICkgQ1VTVE9NKCBmICkuZXF1YWwKI2RlZmluZSBDVVNUT01fSEFT SCggZiApIENVU1RPTSggZiApLmhhc2gKI2RlZmluZSBDVVNUT01fVE9fU1RSSU5HKCBmICkgQ1VT VE9NKCBmICkudG9fc3RyaW5nCiNkZWZpbmUgQ1VTVE9NX09VVFBVVCggZiApIENVU1RPTSggZiAp Lm91dHB1dAoKI2RlZmluZSBDVVNUT01fQ01QKCBjMSwgYzIgKSBDVVNUT01fRVFVQUwoIGMxICko IGMxLCBjMiApCgojZGVmaW5lIENVU1RPTV9JREVOVElGSUVSKCBmICkgQ1VTVE9NKCBmICkuaWRl bnRpZmllcgojZGVmaW5lIENVU1RPTV9JREVOVElGSUVSX1NFVCggZiwgdiApIChDVVNUT00oIGYg KS5pZGVudGlmaWVyID0gdiwgQlVOU1BFQykKI2RlZmluZSBDVVNUT01fSEFTSF9OVU1CRVIoIGYg KSAoQ1VTVE9NX0hBU0goIGYgKSggZiApKQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICBGb3JlaWdu IG1hbmFnZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKi8KI2RlZmluZSBGT1JFSUdOUCggbyApIChQT0lOVEVSUCggbyAp ICYmIChUWVBFKCBvICkgPT0gRk9SRUlHTl9UWVBFKSkKCiNkZWZpbmUgRk9SRUlHTl9UWVBFX05B TUUoIG8gKSAiXyIKICAgCiNkZWZpbmUgRk9SRUlHTl9TSVpFIChzaXplb2YoIHN0cnVjdCBmb3Jl aWduICkpCiNkZWZpbmUgRk9SRUlHTiggZiApIENSRUYoIGYgKS0+Zm9yZWlnbl90CgojZGVmaW5l IEZPUkVJR05fTlVMTCggb2JqICkgKChvYmogPT0gQkZBTFNFKSA/IDBMIDogb2JqKQojZGVmaW5l IEZPUkVJR05fVE9fQ09CSiggZiApIChGT1JFSUdOKCBmICkuY29iaikKI2RlZmluZSBGT1JFSUdO X05VTExQKCBmICkgICAoKGJvb2xfdCkoIUZPUkVJR05fVE9fQ09CSiggZiApKSkKI2RlZmluZSBG T1JFSUdOX0VRUCggbzEsbzIgKSBcCiAgKChib29sX3QpKEZPUkVJR05fVE9fQ09CSiggbzEgKSA9 PSAoRk9SRUlHTl9UT19DT0JKKCBvMiApKSkpCiNkZWZpbmUgRk9SRUlHTl9QVFJfTlVMTCggX3Ag KSAoX3AgPT0gMCkKICAgCiNkZWZpbmUgRk9SRUlHTl9JRCggZiApIEZPUkVJR04oIGYgKS5pZAoK I2RlZmluZSBDX1NUUlVDVF9SRUYoIG8sIHR5cGUsIHNsb3QgKSAgICAgICAgICAgICBcCiAgICgo KHR5cGUpbyktPnNsb3QpCiNkZWZpbmUgQ19TVFJVQ1RfU0VUKCBvLCB0eXBlLCBzbG90LCB2YWx1 ZSApICAgICAgXAogICAoQ19TVFJVQ1RfUkVGKCBvLCB0eXBlLCBzbG90ICkgPSB2YWx1ZSwgQlVO U1BFQykKCiNkZWZpbmUgQ19TVFJVQ1RfUkVGX0FERFIoIG8sIHR5cGUsIHNsb3QgKSAgICAgICAg XAogICAoJigoKHR5cGUpbyktPnNsb3QpKQojZGVmaW5lIENfU1RSVUNUX1NFVF9BRERSKCBvLCB0 eXBlLCBzbG90LCB2YWx1ZSApIFwKICAgKCgodHlwZSlvKS0+c2xvdCA9ICp2YWx1ZSwgQlVOU1BF QykKCiNkZWZpbmUgQ19QT0lOVEVSX1JFRiggbywgdHlwZSwgaSApICAgICAgICAgICAgICAgXAog ICAoKCh0eXBlICopbylbIGkgXSkKI2RlZmluZSBDX1BPSU5URVJfU0VUKCBvLCB0eXBlLCBpLCB2 ICkgICAgICAgICAgICBcCiAgIChDX1BPSU5URVJfUkVGKCBvLCB0eXBlLCBpICkgPSB2LCBCVU5T UEVDKQoKI2RlZmluZSBDX1BPSU5URVJfUkVGX0FERFIoIG8sIHR5cGUsIGkgKSAgICAgICAgICBc CiAgICgmKG8pWyBpIF0pCiNkZWZpbmUgQ19QT0lOVEVSX1NFVF9BRERSKCBvLCB0eXBlLCBpLCB2 ICkgICAgICAgXAogICAob1sgaSBdID0gKnYsIEJVTlNQRUMpCgojZGVmaW5lIENfRlVOQ1RJT05f Q0FMTF8wKCBGICkgXAogICBGKCkKI2RlZmluZSBDX0ZVTkNUSU9OX0NBTExfMSggRixhICkgXAog ICBGKCBhICkKI2RlZmluZSBDX0ZVTkNUSU9OX0NBTExfMiggRixhLGIgKSBcCiAgIEYoIGEsYiAp CiNkZWZpbmUgQ19GVU5DVElPTl9DQUxMXzMoIEYsYSxiLGMgKSBcCiAgIEYoIGEsYixjICkKI2Rl ZmluZSBDX0ZVTkNUSU9OX0NBTExfNCggRixhLGIsYyxkICkgXAogICBGKCBhLGIsYyxkICkKI2Rl ZmluZSBDX0ZVTkNUSU9OX0NBTExfNSggRixhLGIsYyxkLGUgKSBcCiAgIEYoIGEsYixjLGQsZSAp CiNkZWZpbmUgQ19GVU5DVElPTl9DQUxMXzYoIEYsYSxiLGMsZCxlLGYgKSBcCiAgIEYoIGEsYixj LGQsZSxmICkKI2RlZmluZSBDX0ZVTkNUSU9OX0NBTExfNyggRixhLGIsYyxkLGUsZixoICkgXAog ICBGKCBhLGIsYyxkLGUsZixoICkKI2RlZmluZSBDX0ZVTkNUSU9OX0NBTExfOCggRixhLGIsYyxk LGUsZixoLGkgKSBcCiAgIEYoIGEsYixjLGQsZSxmLGgsaSApCiNkZWZpbmUgQ19GVU5DVElPTl9D QUxMXzkoIEYsYSxiLGMsZCxlLGYsaCxpLGogKSBcCiAgIEYoIGEsYixjLGQsZSxmLGgsaSxqICkK I2RlZmluZSBDX0ZVTkNUSU9OX0NBTExfMTAoIEYsYSxiLGMsZCxlLGYsaCxpLGosayApIFwKICAg RiggYSxiLGMsZCxlLGYsaCxpLGosayApCiNkZWZpbmUgQ19GVU5DVElPTl9DQUxMXzExKCBGLGEs YixjLGQsZSxmLGgsaSxqLGssbCApIFwKICAgRiggYSxiLGMsZCxlLGYsaCxpLGosayxsICkKI2Rl ZmluZSBDX0ZVTkNUSU9OX0NBTExfMTIoIEYsYSxiLGMsZCxlLGYsaCxpLGosayxsLG0gKSBcCiAg IEYoIGEsYixjLGQsZSxmLGgsaSxqLGssbCxtICkKI2RlZmluZSBDX0ZVTkNUSU9OX0NBTExfMTMo IEYsYSxiLGMsZCxlLGYsaCxpLGosayxsLG0sbiApIFwKICAgRiggYSxiLGMsZCxlLGYsaCxpLGos ayxsLG0sbiApCiNkZWZpbmUgQ19GVU5DVElPTl9DQUxMXzE0KCBGLGEsYixjLGQsZSxmLGgsaSxq LGssbCxtLG4sbyApIFwKICAgRiggYSxiLGMsZCxlLGYsaCxpLGosayxsLG0sbixvICkKI2RlZmlu ZSBDX0ZVTkNUSU9OX0NBTExfMTUoIEYsYSxiLGMsZCxlLGYsaCxpLGosayxsLG0sbixvLHAgKSBc CiAgIEYoIGEsYixjLGQsZSxmLGgsaSxqLGssbCxtLG4sbyxwICkKI2RlZmluZSBDX0ZVTkNUSU9O X0NBTExfMTYoIEYsYSxiLGMsZCxlLGYsaCxpLGosayxsLG0sbixvLHAscSApIFwKICAgRiggYSxi LGMsZCxlLGYsaCxpLGosayxsLG0sbixvLHAscSApCgojZGVmaW5lIENFTlVNX1RPX0ZPUkVJR04o IF8xLCBfMiApIGNvYmpfdG9fZm9yZWlnbiggXzEsICh2b2lkICopXzIgKQoKLyotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0qLwovKiAgICBEeW5hbWljIGxvYWRpbmcgZGVmYXVsdCBlbnRyeSBpbml0IHN5bWJvbC4gICAg ICAgICAgICAgICAgICAgICAgICovCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2RlZmluZSBCR0xfRFlOQU1J Q19MT0FEX0lOSVQgImJpZ2xvb19kbG9wZW5faW5pdCIKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLyogICAg VGhlIGV4dGVybmFsIGRlY2xhcmF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCmV4dGVybiBvYmpfdCBiaWdsb29fZXhpdCggb2Jq X3QgKTsKCmV4dGVybiBvYmpfdCB2YV9nZW5lcmljX2VudHJ5KCk7CmV4dGVybiBvYmpfdCBhcHBs eSggb2JqX3QsIG9ial90ICk7CgkJICAKZXh0ZXJuIG9ial90IHRoZV9mYWlsdXJlKCBvYmpfdCwg b2JqX3QsIG9ial90ICk7CgpleHRlcm4gb2JqX3QgbWFrZV9meF9wcm9jZWR1cmUoIGZ1bmN0aW9u X3QsIGludCwgaW50ICk7CmV4dGVybiBvYmpfdCBtYWtlX3ZhX3Byb2NlZHVyZSggZnVuY3Rpb25f dCwgaW50LCBpbnQgKTsKCmV4dGVybiBvYmpfdCBtYWtlX3BhaXIoIG9ial90LCBvYmpfdCApOwpl eHRlcm4gb2JqX3Qgc3RycG9ydF9mbHVzaCggb2JqX3QgKTsKZXh0ZXJuIG9ial90IG1ha2Vfb3V0 cHV0X3BvcnQoIGNoYXIgKiwgRklMRSosIG9ial90ICk7CmV4dGVybiBvYmpfdCBjcmVhdGVfdmVj dG9yKCBpbnQgKTsKCmV4dGVybiBvYmpfdCBzdHJpbmdfdG9fYnN0cmluZyggY2hhciAqICk7CmV4 dGVybiBvYmpfdCBzdHJpbmdfdG9fYnN0cmluZ19sZW4oIGNoYXIgKiwgaW50ICk7CmV4dGVybiBv YmpfdCBjbG9zZV9pbml0X3N0cmluZygpOwoKZXh0ZXJuIG9ial90IGNvYmpfdG9fZm9yZWlnbigg b2JqX3QsIHZvaWQgKiApOwpleHRlcm4gaW50IF9iaWdsb29fbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdLCBjaGFyICplbnZbXSwgb2JqX3QgKCopKCkgKTsKLy8gICBleHRlcm4gaW50IF9iaWds b29fbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdLCBjaGFyICplbnZbXSApOwpleHRlcm4gaW50 IGJpZ2xvb19hYm9ydCggbG9uZyApOwoKZXh0ZXJuIG9ial90IG1ha2VfcmVhbCggZG91YmxlICk7 CgpleHRlcm4gb2JqX3Qgc3RyaW5nX3RvX3N5bWJvbCggY2hhciAqICk7CgojaWYoIGRlZmluZWQo IEtFRVBfQkFDS19QVFJTICkgKQpleHRlcm4gb2JqX3QgYmdsX2hlYXBfZGVidWdfbWFya19vYmoo IG9ial90ICk7CmV4dGVybiBjaGFyICpiZ2xfaGVhcF9kZWJ1Z19tYXJrX3N0ciggY2hhciAqICk7 CiNlbmRpZgoKI2lmZGVmIF9fY3BsdXNwbHVzCn0KI2VuZGlmCgojZW5kaWYKCiNpbmNsdWRlIDxz aWduYWwuaD4KCnN0YXRpYyBvYmpfdCBCR2xfbG9vcHowMHp6X19ldmNvbXBpbGV6MDAob2JqX3Qs IG9ial90LCBvYmpfdCwgb2JqX3QsIG9ial90LCBvYmpfdCk7CnN0YXRpYyBvYmpfdCBCR2xfemMz YW5vbnltb3VzemEzMTQwMHplM3o4M3p6X19ldmNvbXBpbGV6MDAob2JqX3QpOwpleHRlcm4gb2Jq X3QgQkdsX21vZHVsZXpkMmluaXRpYWxpemE3YXRpb256NzV6el9fZXZjb21waWxlejAwKGxvbmcs IGNoYXIgKik7CmV4dGVybiBvYmpfdCBCR2xfbW9kdWxlemQyaW5pdGlhbGl6YTdhdGlvbno3NXp6 X19leHBhbmR6MDAobG9uZywgY2hhciAqKTsKZXh0ZXJuIG9ial90IEJHbF9tb2R1bGV6ZDJpbml0 aWFsaXphN2F0aW9uejc1enpfX3R5cGV6MDAobG9uZywgY2hhciAqKTsKZXh0ZXJuIG9ial90IEJH bF9tb2R1bGV6ZDJpbml0aWFsaXphN2F0aW9uejc1enpfX2Vycm9yejAwKGxvbmcsIGNoYXIgKik7 CmV4dGVybiBvYmpfdCBCR2xfbW9kdWxlemQyaW5pdGlhbGl6YTdhdGlvbno3NXp6X19iaWdsb296 MDAobG9uZywgY2hhciAqKTsKZXh0ZXJuIG9ial90IEJHbF9tb2R1bGV6ZDJpbml0aWFsaXphN2F0 aW9uejc1enpfX3R2ZWN0b3J6MDAobG9uZywgY2hhciAqKTsKZXh0ZXJuIG9ial90IEJHbF9tb2R1 bGV6ZDJpbml0aWFsaXphN2F0aW9uejc1enpfX3N0cnVjdHVyZXowMChsb25nLCBjaGFyICopOwpl eHRlcm4gb2JqX3QgQkdsX21vZHVsZXpkMmluaXRpYWxpemE3YXRpb256NzV6el9fYmV4aXR6MDAo bG9uZywgY2hhciAqKTsKZXh0ZXJuIG9ial90IEJHbF9tb2R1bGV6ZDJpbml0aWFsaXphN2F0aW9u ejc1enpfX29zejAwKGxvbmcsIGNoYXIgKik7CmV4dGVybiBvYmpfdCBCR2xfbW9kdWxlemQyaW5p dGlhbGl6YTdhdGlvbno3NXp6X19kc3NzbHowMChsb25nLCBjaGFyICopOwpleHRlcm4gb2JqX3Qg QkdsX21vZHVsZXpkMmluaXRpYWxpemE3YXRpb256NzV6el9fcjRfbnVtYmVyc182XzV6MDAobG9u ZywgY2hhciAqKTsKZXh0ZXJuIG9ial90IEJHbF9tb2R1bGV6ZDJpbml0aWFsaXphN2F0aW9uejc1 enpfX3I0X251bWJlcnNfNl81X2ZpeG51bXowMChsb25nLCBjaGFyICopOwpleHRlcm4gb2JqX3Qg QkdsX21vZHVsZXpkMmluaXRpYWxpemE3YXRpb256NzV6el9fcjRfbnVtYmVyc182XzVfZmxvbnVt ejAwKGxvbmcsIGNoYXIgKik7CmV4dGVybiBvYmpfdCBCR2xfbW9kdWxlemQyaW5pdGlhbGl6YTdh dGlvbno3NXp6X19yNF9jaGFyYWN0ZXJzXzZfNnowMChsb25nLCBjaGFyICopOwpleHRlcm4gb2Jq X3QgQkdsX21vZHVsZXpkMmluaXRpYWxpemE3YXRpb256NzV6el9fcjRfZXF1aXZhbGVuY2VfNl8y ejAwKGxvbmcsIGNoYXIgKik7CmV4dGVybiBvYmpfdCBCR2xfbW9kdWxlemQyaW5pdGlhbGl6YTdh dGlvbno3NXp6X19yNF9ib29sZWFuc182XzF6MDAobG9uZywgY2hhciAqKTsKZXh0ZXJuIG9ial90 IEJHbF9tb2R1bGV6ZDJpbml0aWFsaXphN2F0aW9uejc1enpfX3I0X3N5bWJvbHNfNl80ejAwKGxv bmcsIGNoYXIgKik7CmV4dGVybiBvYmpfdCBCR2xfbW9kdWxlemQyaW5pdGlhbGl6YTdhdGlvbno3 NXp6X19yNF9zdHJpbmdzXzZfN3owMChsb25nLCBjaGFyICopOwpleHRlcm4gb2JqX3QgQkdsX21v ZHVsZXpkMmluaXRpYWxpemE3YXRpb256NzV6el9fcjRfcGFpcnNfYW5kX2xpc3RzXzZfM3owMChs b25nLCBjaGFyICopOwpleHRlcm4gb2JqX3QgQkdsX21vZHVsZXpkMmluaXRpYWxpemE3YXRpb256 NzV6el9fcjRfaW5wdXRfNl8xMF8yejAwKGxvbmcsIGNoYXIgKik7CmV4dGVybiBvYmpfdCBCR2xf bW9kdWxlemQyaW5pdGlhbGl6YTdhdGlvbno3NXp6X19yNF9jb250cm9sX2ZlYXR1cmVzXzZfOXow MChsb25nLCBjaGFyICopOwpleHRlcm4gb2JqX3QgQkdsX21vZHVsZXpkMmluaXRpYWxpemE3YXRp b256NzV6el9fcjRfdmVjdG9yc182Xzh6MDAobG9uZywgY2hhciAqKTsKZXh0ZXJuIG9ial90IEJH bF9tb2R1bGV6ZDJpbml0aWFsaXphN2F0aW9uejc1enpfX3I0X3BvcnRzXzZfMTBfMXowMChsb25n LCBjaGFyICopOwpleHRlcm4gb2JqX3QgQkdsX21vZHVsZXpkMmluaXRpYWxpemE3YXRpb256NzV6 el9fcjRfb3V0cHV0XzZfMTBfM3owMChsb25nLCBjaGFyICopOwpleHRlcm4gb2JqX3QgQkdsX21v ZHVsZXpkMmluaXRpYWxpemE3YXRpb256NzV6el9fZXZlbnZ6MDAobG9uZywgY2hhciAqKTsKZXh0 ZXJuIG9ial90IEJHbF9tb2R1bGV6ZDJpbml0aWFsaXphN2F0aW9uejc1enpfX2V2YWx6MDAobG9u ZywgY2hhciAqKTsKZXh0ZXJuIG9ial90IEJHbF9leHBhbmR6MDB6el9fZXhwYW5kejAwKG9ial90 KTsKZXh0ZXJuIG9ial90IEJHbF9tYWtlemQyZHNzc2x6ZDJmdW5jdGlvbnpkMnByZWx1ZGV6ZDJ6 el9fZHNzc2x6MDAob2JqX3QsIG9ial90LCBvYmpfdCwgb2JqX3QpOwpzdGF0aWMgb2JqX3QgQkds X19ldmNvbXBpbGV6MDB6el9fZXZjb21waWxlejAwKG9ial90LCBvYmpfdCwgb2JqX3QsIG9ial90 LCBvYmpfdCwgb2JqX3QsIG9ial90KTsKZXh0ZXJuIG9ial90IEJHbF9udWxsemQyZW52aXJvbm1l bnR6ZDJ6el9fZXZhbHowMChvYmpfdCk7CmV4dGVybiBsb25nIGJnbF9saXN0X2xlbmd0aChvYmpf dCk7CnN0YXRpYyBvYmpfdCBCR2xfX2xvb3BfejAwenpfX2V2Y29tcGlsZXowMChvYmpfdCwgb2Jq X3QpOwpleHRlcm4gb2JqX3QgQkdsX2ZpbmR6ZDJsb2N6ZDJ6el9fZXZjb21waWxlejAwKG9ial90 LCBvYmpfdCk7CnN0YXRpYyBvYmpfdCBCR2xfZXZjb21waWxlemQyY25zdHpkMnp6X19ldmNvbXBp bGV6MDAob2JqX3QsIG9ial90KTsKZXh0ZXJuIG9ial90IEJHbF9zY2hlbWV6ZDJyZXBvcnR6ZDJl bnZpcm9ubWVudHowMHp6X19ldmFsejAwKG9ial90KTsKc3RhdGljIG9ial90IEJHbF9jbnN0emQy aW5pdHpkMnp6X19ldmNvbXBpbGV6MDAoKTsKZXh0ZXJuIG9ial90IHN0cmluZ190b19zeW1ib2wo Y2hhciAqKTsKc3RhdGljIG9ial90IEJHbF9fZmluZHpkMmxvY3pkMnp6X19ldmNvbXBpbGV6MDAo b2JqX3QsIG9ial90LCBvYmpfdCk7CnN0YXRpYyBvYmpfdCBCR2xfZXZjb21waWxlemQyZXJyb3J6 ZDJ6el9fZXZjb21waWxlejAwKG9ial90LCBvYmpfdCwgb2JqX3QsIG9ial90KTsKZXh0ZXJuIG9i al90IGNfc3Vic3RyaW5nKG9ial90LCBpbnQsIGludCk7CnN0YXRpYyBvYmpfdCBCR2xfZXZjb21w aWxlemQybGFtYmRhemQyenpfX2V2Y29tcGlsZXowMChvYmpfdCwgb2JqX3QsIG9ial90LCBvYmpf dCwgb2JqX3QpOwpleHRlcm4gb2JqX3QgQkdsX21ha2V6ZDJwcm9taXNlemQyenpfX3I0X2NvbnRy b2xfZmVhdHVyZXNfNl85ejAwKG9ial90KTsKZXh0ZXJuIG9ial90IEJHbF9pbnRlcmFjdGlvbnpk MmVudmlyb25tZW50emQyenpfX2V2YWx6MDAoKTsKc3RhdGljIG9ial90IEJHbF9ldmNvbXBpbGV6 ZDJyZWZ6ZDJ6el9fZXZjb21waWxlejAwKG9ial90LCBvYmpfdCk7CnN0YXRpYyBvYmpfdCBCR2xf aW1wb3J0ZWR6ZDJtb2R1bGVzemQyaW5pdHowMHp6X19ldmNvbXBpbGV6MDAoKTsKc3RhdGljIG9i al90IEJHbF9ldmNvbXBpbGV6ZDJjb21waWxlZHpkMmFwcGxpY2F0aW9uejAwenpfX2V2Y29tcGls ZXowMChvYmpfdCwgb2JqX3QsIG9ial90KTsKZXh0ZXJuIG9ial90IEJHbF9ldmFsemQybG9va3Vw emQyenpfX2V2ZW52ejAwKG9ial90KTsKc3RhdGljIG9ial90IEJHbF9yZXF1aXJlemQyaW5pdGlh bGl6YTdhdGlvbno3NXp6X19ldmNvbXBpbGV6MDAgPSBCVU5TUEVDOwpzdGF0aWMgb2JqX3QgQkds X3pjM2Fub255bW91c3phMzE0NTB6ZTN6ODN6el9fZXZjb21waWxlejAwKG9ial90LCBvYmpfdCwg b2JqX3QsIG9ial90KTsKZXh0ZXJuIG9ial90IEJHbF9tb2R1bGV6ZDJkZWNsYXJhdGlvbnoxMnpj MHp6X19ldmFsejAwKG9ial90KTsKZXh0ZXJuIG9ial90IEJHbF9lcnJvcnpmMmxvY2F0aW9uemYy enpfX2Vycm9yejAwKG9ial90LCBvYmpfdCwgb2JqX3QsIG9ial90LCBvYmpfdCk7CmV4dGVybiBi b29sX3QgQkdsX2VxdWFsemYzemYzenpfX3I0X2VxdWl2YWxlbmNlXzZfMnowMChvYmpfdCwgb2Jq X3QpOwpzdGF0aWMgb2JqX3QgQkdsX3VudHlwZXpkMmlkZW50emQyenpfX2V2Y29tcGlsZXowMChv YmpfdCk7CnN0YXRpYyBvYmpfdCBCR2xfemMzYW5vbnltb3VzemEzMTQ1M3plM3o4M3p6X19ldmNv bXBpbGV6MDAob2JqX3QsIG9ial90LCBvYmpfdCwgb2JqX3QpOwpleHRlcm4gb2JqX3QgQkdsX2xp c3R6ZDJ6ZTN2ZWN0b3J6MzF6el9fcjRfdmVjdG9yc182Xzh6MDAob2JqX3QpOwpzdGF0aWMgb2Jq X3QgQkdsX2V2Y29tcGlsZXpkMmJlZ2luemQyenpfX2V2Y29tcGlsZXowMChvYmpfdCwgb2JqX3Qs IG9ial90LCBvYmpfdCwgb2JqX3QsIG9ial90KTsKc3RhdGljIG9ial90IEJHbF9ldmNvbXBpbGV6 ZDJnbG9iYWx6ZDJhcHBsaWNhdGlvbnowMHp6X19ldmNvbXBpbGV6MDAob2JqX3QsIG9ial90LCBv YmpfdCk7CmV4dGVybiBvYmpfdCBCR2xfZXZjb21waWxlejAwenpfX2V2Y29tcGlsZXowMChvYmpf dCwgb2JqX3QsIG9ial90LCBvYmpfdCwgb2JqX3QsIG9ial90KTsKc3RhdGljIG9ial90IEJHbF92 YXJpYWJsZXowMHp6X19ldmNvbXBpbGV6MDAob2JqX3QsIG9ial90LCBvYmpfdCwgb2JqX3QpOwpz dGF0aWMgb2JqX3QgQkdsX3VudHlwZXpkMmlkZW50emEyejcwenpfX2V2Y29tcGlsZXowMChvYmpf dCk7CmV4dGVybiBvYmpfdCBCR2xfZHNzc2x6ZDJmb3JtYWxzemQyemUzc2NoZW1lemQyZm9ybWFs c3ozMXp6X19kc3NzbHowMChvYmpfdCwgb2JqX3QpOwpzdGF0aWMgb2JqX3QgQkdsX2V2Y29tcGls ZXpkMnNldHpkMnp6X19ldmNvbXBpbGV6MDAob2JqX3QsIG9ial90LCBvYmpfdCk7CnN0YXRpYyBv YmpfdCBCR2xfZXZjb21waWxlemQyYXBwbGljYXRpb256ZDJ6el9fZXZjb21waWxlejAwKG9ial90 LCBvYmpfdCwgb2JqX3QsIG9ial90KTsKc3RhdGljIG9ial90IEJHbF9zeW1ib2wxOTQ3ejAwenpf X2V2Y29tcGlsZXowMCA9IEJVTlNQRUM7CnN0YXRpYyBvYmpfdCBCR2xfc3ltYm9sMTk0NHowMHp6 X19ldmNvbXBpbGV6MDAgPSBCVU5TUEVDOwpzdGF0aWMgb2JqX3QgQkdsX3N5bWJvbDE5NDN6MDB6 el9fZXZjb21waWxlejAwID0gQlVOU1BFQzsKc3RhdGljIG9ial90IEJHbF9zeW1ib2wxOTQyejAw enpfX2V2Y29tcGlsZXowMCA9IEJVTlNQRUM7CnN0YXRpYyBvYmpfdCBCR2xfc3ltYm9sMTk0MXow MHp6X19ldmNvbXBpbGV6MDAgPSBCVU5TUEVDOwpzdGF0aWMgb2JqX3QgQkdsX3N5bWJvbDE5NDB6 MDB6el9fZXZjb21waWxlejAwID0gQlVOU1BFQzsKc3RhdGljIG9ial90IEJHbF9zeW1ib2wxOTM5 ejAwenpfX2V2Y29tcGlsZXowMCA9IEJVTlNQRUM7CnN0YXRpYyBvYmpfdCBCR2xfc3ltYm9sMTkz OHowMHp6X19ldmNvbXBpbGV6MDAgPSBCVU5TUEVDOwpzdGF0aWMgb2JqX3QgQkdsX3N5bWJvbDE5 Mzd6MDB6el9fZXZjb21waWxlejAwID0gQlVOU1BFQzsKc3RhdGljIG9ial90IEJHbF9zeW1ib2wx OTM2ejAwenpfX2V2Y29tcGlsZXowMCA9IEJVTlNQRUM7CnN0YXRpYyBvYmpfdCBCR2xfc3ltYm9s MTkzNXowMHp6X19ldmNvbXBpbGV6MDAgPSBCVU5TUEVDOwpzdGF0aWMgb2JqX3QgQkdsX3N5bWJv bDE5MzJ6MDB6el9fZXZjb21waWxlejAwID0gQlVOU1BFQzsKc3RhdGljIG9ial90IEJHbF9zeW1i b2wxOTI4ejAwenpfX2V2Y29tcGlsZXowMCA9IEJVTlNQRUM7CnN0YXRpYyBvYmpfdCAqX19jbnN0 OwoKREVGSU5FX1NUUklORyggQkdsX3N0cmluZzE5NDZ6MDB6el9fZXZjb21waWxlejAwLCBCZ0xf YmdsX3N0cmluZzE5NDZ6YTcwMHphN3phN19fZXZjb21waWxlemE3MDAxOTQ5ejAwLCAiSWxsZWdh bCBgc2V0IScgZXhwcmVzc2lvbiIsIDI1ICk7CkRFRklORV9TVFJJTkcoIEJHbF9zdHJpbmcxOTQ1 ejAwenpfX2V2Y29tcGlsZXowMCwgQmdMX2JnbF9zdHJpbmcxOTQ1emE3MDB6YTd6YTdfX2V2Y29t cGlsZXphNzAwMTk1MHowMCwgIlVuYm91bmQgdmFyaWFibGUiLCAxNiApOwpERUZJTkVfU1RSSU5H KCBCR2xfc3RyaW5nMTkzNHowMHp6X19ldmNvbXBpbGV6MDAsIEJnTF9iZ2xfc3RyaW5nMTkzNHph NzAwemE3emE3X19ldmNvbXBpbGV6YTcwMDE5NTF6MDAsICJJbGxlZ2FsIGV4cHJlc3Npb24iLCAx OCApOwpERUZJTkVfU1RSSU5HKCBCR2xfc3RyaW5nMTkzM3owMHp6X19ldmNvbXBpbGV6MDAsIEJn TF9iZ2xfc3RyaW5nMTkzM3phNzAwemE3emE3X19ldmNvbXBpbGV6YTcwMDE5NTJ6MDAsICJOb3Qg YSBwcm9jZWR1cmUiLCAxNSApOwpERUZJTkVfU1RSSU5HKCBCR2xfc3RyaW5nMTkzMXowMHp6X19l dmNvbXBpbGV6MDAsIEJnTF9iZ2xfc3RyaW5nMTkzMXphNzAwemE3emE3X19ldmNvbXBpbGV6YTcw MDE5NTN6MDAsICJJbGxlZ2FsIGZvcm0iLCAxMiApOwpERUZJTkVfU1RSSU5HKCBCR2xfc3RyaW5n MTkzMHowMHp6X19ldmNvbXBpbGV6MDAsIEJnTF9iZ2xfc3RyaW5nMTkzMHphNzAwemE3emE3X19l dmNvbXBpbGV6YTcwMDE5NTR6MDAsICJzZXQhIiwgNCApOwpERUZJTkVfU1RSSU5HKCBCR2xfc3Ry aW5nMTkyOXowMHp6X19ldmNvbXBpbGV6MDAsIEJnTF9iZ2xfc3RyaW5nMTkyOXphNzAwemE3emE3 X19ldmNvbXBpbGV6YTcwMDE5NTV6MDAsICJJbGxlZ2FsIGRlZmluZSBmb3JtIChzZWFsZWQgZW52 aXJvbm1lbnQpIiwgNDAgKTsKREVGSU5FX1NUUklORyggQkdsX3N0cmluZzE5Mjd6MDB6el9fZXZj b21waWxlejAwLCBCZ0xfYmdsX3N0cmluZzE5Mjd6YTcwMHphN3phN19fZXZjb21waWxlemE3MDAx OTU2ejAwLCAiSWxsZWdhbCBleHByZXNzaW9uIChzaG91bGQgYmUgcXVvdGVkKSIsIDM3ICk7CkRF RklORV9TVFJJTkcoIEJHbF9zdHJpbmcxOTI2ejAwenpfX2V2Y29tcGlsZXowMCwgQmdMX2JnbF9z dHJpbmcxOTI2emE3MDB6YTd6YTdfX2V2Y29tcGlsZXphNzAwMTk1N3owMCwgImV2YWwiLCA0ICk7 CkRFRklORV9FWFBPUlRfUFJPQ0VEVVJFKCBCR2xfZmluZHpkMmxvY3pkMmVudnowMHp6X19ldmNv bXBpbGV6MDAsIEJnTF9iZ2xfX2ZpbmR6YTdkMmxvY3phN2QyemE3emE3X19ldmNvbXBpbGV6YTcw MDE5NTh6YTcsIEJHbF9fZmluZHpkMmxvY3pkMnp6X19ldmNvbXBpbGV6MDAsIDBMLCAyICk7CkRF RklORV9FWFBPUlRfUFJPQ0VEVVJFKCBCR2xfZXZjb21waWxlemQyZW52emQyenpfX2V2Y29tcGls ZXowMCwgQmdMX2JnbF9fZXZjb21waWxlemE3MDB6YTd6YTdfX2V2Y29tcGlsZXphNzAwMTk1OXow MCwgQkdsX19ldmNvbXBpbGV6MDB6el9fZXZjb21waWxlejAwLCAwTCwgNiApOwoKCgovKiBtb2R1 bGUtaW5pdGlhbGl6YXRpb24gKi8Kb2JqX3QgQkdsX21vZHVsZXpkMmluaXRpYWxpemE3YXRpb256 NzV6el9fZXZjb21waWxlejAwKGxvbmcgQmdMX2NoZWNrc3VtejAwXzMwMDksIGNoYXIgKiBCZ0xf ZnJvbXowMF8zMDEwKQp7IEFOX09CSkVDVDsKeyAKaWYoCkNCT09MKEJHbF9yZXF1aXJlemQyaW5p dGlhbGl6YTdhdGlvbno3NXp6X19ldmNvbXBpbGV6MDApKQp7IApCR2xfcmVxdWlyZXpkMmluaXRp YWxpemE3YXRpb256NzV6el9fZXZjb21waWxlejAwID0gCkJCT09MKCgoYm9vbF90KTApKTsgCkJH bF9jbnN0emQyaW5pdHpkMnp6X19ldmNvbXBpbGV6MDAoKTsgCkJHbF9pbXBvcnRlZHpkMm1vZHVs ZXN6ZDJpbml0ejAwenpfX2V2Y29tcGlsZXowMCgpOyAKcmV0dXJuIEJVTlNQRUM7fSAgZWxzZSAK eyAKcmV0dXJuIEJVTlNQRUM7fSB9IAp9CgoKCi8qIGNuc3QtaW5pdCAqLwpvYmpfdCBCR2xfY25z dHpkMmluaXR6ZDJ6el9fZXZjb21waWxlejAwKCkKeyBBTl9PQkpFQ1Q7CnsgLyogRXZhbC9ldmNv bXBpbGUuc2NtIDE1ICovCkJHbF9zeW1ib2wxOTI4ejAwenpfX2V2Y29tcGlsZXowMCA9IApzdHJp bmdfdG9fc3ltYm9sKCJub3doZXJlIik7IApCR2xfc3ltYm9sMTkzMnowMHp6X19ldmNvbXBpbGV6 MDAgPSAKc3RyaW5nX3RvX3N5bWJvbCgibGFtYmRhIik7IApCR2xfc3ltYm9sMTkzNXowMHp6X19l dmNvbXBpbGV6MDAgPSAKc3RyaW5nX3RvX3N5bWJvbCgibW9kdWxlIik7IApCR2xfc3ltYm9sMTkz NnowMHp6X19ldmNvbXBpbGV6MDAgPSAKc3RyaW5nX3RvX3N5bWJvbCgiYXNzZXJ0Iik7IApCR2xf c3ltYm9sMTkzN3owMHp6X19ldmNvbXBpbGV6MDAgPSAKc3RyaW5nX3RvX3N5bWJvbCgicXVvdGUi KTsgCkJHbF9zeW1ib2wxOTM4ejAwenpfX2V2Y29tcGlsZXowMCA9IApzdHJpbmdfdG9fc3ltYm9s KCJpZiIpOyAKQkdsX3N5bWJvbDE5Mzl6MDB6el9fZXZjb21waWxlejAwID0gCnN0cmluZ190b19z eW1ib2woImJlZ2luIik7IApCR2xfc3ltYm9sMTk0MHowMHp6X19ldmNvbXBpbGV6MDAgPSAKc3Ry aW5nX3RvX3N5bWJvbCgiZGVmaW5lIik7IApCR2xfc3ltYm9sMTk0MXowMHp6X19ldmNvbXBpbGV6 MDAgPSAKc3RyaW5nX3RvX3N5bWJvbCgic2V0ISIpOyAKQkdsX3N5bWJvbDE5NDJ6MDB6el9fZXZj b21waWxlejAwID0gCnN0cmluZ190b19zeW1ib2woImJpbmQtZXhpdCIpOyAKQkdsX3N5bWJvbDE5 NDN6MDB6el9fZXZjb21waWxlejAwID0gCnN0cmluZ190b19zeW1ib2woInVud2luZC1wcm90ZWN0 Iik7IApCR2xfc3ltYm9sMTk0NHowMHp6X19ldmNvbXBpbGV6MDAgPSAKc3RyaW5nX3RvX3N5bWJv bCgiZHluYW1pYyIpOyAKcmV0dXJuICggCkJHbF9zeW1ib2wxOTQ3ejAwenpfX2V2Y29tcGlsZXow MCA9IApzdHJpbmdfdG9fc3ltYm9sKCJhdCIpLCBCVU5TUEVDKSA7fSAKfQoKCgovKiBmaW5kLWxv YyAqLwpvYmpfdCBCR2xfZmluZHpkMmxvY3pkMnp6X19ldmNvbXBpbGV6MDAob2JqX3QgQmdMX2V4 cHowMF8xLCBvYmpfdCBCZ0xfZGVmYXVsdHowMF8yKQp7IEFOX09CSkVDVDsKeyAvKiBFdmFsL2V2 Y29tcGlsZS5zY20gNTMgKi8KeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNTQgKi8KYm9vbF90IEJn TF90ZXN0MTEwMnowMF8xNDA2OwpCZ0xfdGVzdDExMDJ6MDBfMTQwNiA9IApFWFRFTkRFRF9QQUlS UChCZ0xfZXhwejAwXzEpOyAKaWYoQmdMX3Rlc3QxMTAyejAwXzE0MDYpCnsgLyogRXZhbC9ldmNv bXBpbGUuc2NtIDU0ICovCnJldHVybiAKQ0VSKEJnTF9leHB6MDBfMSk7fSAgZWxzZSAKeyAvKiBF dmFsL2V2Y29tcGlsZS5zY20gNTQgKi8KcmV0dXJuIEJnTF9kZWZhdWx0ejAwXzI7fSB9IH0gCn0K CgoKLyogX2ZpbmQtbG9jICovCm9ial90IEJHbF9fZmluZHpkMmxvY3pkMnp6X19ldmNvbXBpbGV6 MDAob2JqX3QgQmdMX2VudnowMF8yOTcwLCBvYmpfdCBCZ0xfZXhwejAwXzI5NzEsIG9ial90IEJn TF9kZWZhdWx0ejAwXzI5NzIpCnsgQU5fT0JKRUNUOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA1 MyAqLwpyZXR1cm4gCkJHbF9maW5kemQybG9jemQyenpfX2V2Y29tcGlsZXowMChCZ0xfZXhwejAw XzI5NzEsIEJnTF9kZWZhdWx0ejAwXzI5NzIpO30gCn0KCgoKLyogdW50eXBlLWlkZW50ICovCm9i al90IEJHbF91bnR5cGV6ZDJpZGVudHpkMnp6X19ldmNvbXBpbGV6MDAob2JqX3QgQmdMX2lkejAw XzMpCnsgQU5fT0JKRUNUOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA2MSAqLwppZigKU1lNQk9M UChCZ0xfaWR6MDBfMykpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDY0ICovCm9ial90IEJnTF9z dHJpbmd6MDBfNDAzOwpCZ0xfc3RyaW5nejAwXzQwMyA9IApTWU1CT0xfVE9fU1RSSU5HKEJnTF9p ZHowMF8zKTsgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDY0ICovCmludCBCZ0xfbGVuejAwXzQw NDsKQmdMX2xlbnowMF80MDQgPSAKU1RSSU5HX0xFTkdUSChCZ0xfc3RyaW5nejAwXzQwMyk7IAp7 IC8qIEV2YWwvZXZjb21waWxlLnNjbSA2NSAqLwoKeyAKbG9uZyBCZ0xfd2Fsa2VyejAwXzQwNTsK QmdMX3dhbGtlcnowMF80MDUgPSAoKGxvbmcpMCk7IApCZ0xfbG9vcHowMF80MDY6CnsgLyogRXZh bC9ldmNvbXBpbGUuc2NtIDY4ICovCmJvb2xfdCBCZ0xfdGVzdHowMF8zMDM3Owp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSA2OCAqLwpsb25nIEJnTF9hdXh6MDBfMzAzODsKQmdMX2F1eHowMF8zMDM4 ID0gCihsb25nKShCZ0xfbGVuejAwXzQwNCk7IApCZ0xfdGVzdHowMF8zMDM3ID0gCihCZ0xfd2Fs a2VyejAwXzQwNT09QmdMX2F1eHowMF8zMDM4KTsgfSAKaWYoQmdMX3Rlc3R6MDBfMzAzNykKeyAv KiBFdmFsL2V2Y29tcGlsZS5zY20gNjggKi8KcmV0dXJuIEJnTF9pZHowMF8zO30gIGVsc2UgCnsg LyogRXZhbC9ldmNvbXBpbGUuc2NtIDcwICovCmJvb2xfdCBCZ0xfdGVzdHowMF8zMDQxOwp7IC8q IEV2YWwvZXZjb21waWxlLnNjbSA3MCAqLwpib29sX3QgQmdMX3Rlc3R6MDBfMzA0MjsKeyAvKiBF dmFsL2V2Y29tcGlsZS5zY20gNzAgKi8KdW5zaWduZWQgY2hhciBCZ0xfYXV4ejAwXzMwNDM7Cnsg LyogRXZhbC9ldmNvbXBpbGUuc2NtIDcwICovCmludCBCZ0xfYXV4ejAwXzMwNDQ7CkJnTF9hdXh6 MDBfMzA0NCA9IAooaW50KShCZ0xfd2Fsa2VyejAwXzQwNSk7IApCZ0xfYXV4ejAwXzMwNDMgPSAK U1RSSU5HX1JFRihCZ0xfc3RyaW5nejAwXzQwMywgQmdMX2F1eHowMF8zMDQ0KTsgfSAKQmdMX3Rl c3R6MDBfMzA0MiA9IAooQmdMX2F1eHowMF8zMDQzPT0oKHVuc2lnbmVkIGNoYXIpJzonKSk7IH0g CmlmKEJnTF90ZXN0ejAwXzMwNDIpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDcxICovCmJvb2xf dCBCZ0xfdGVzdHowMF8zMDQ4Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA3MSAqLwpsb25nIEJn TF9hdXh6MDBfMzA0OTsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNzEgKi8KbG9uZyBCZ0xfYXV4 ejAwXzMwNTA7CkJnTF9hdXh6MDBfMzA1MCA9IAoobG9uZykoQmdMX2xlbnowMF80MDQpOyAKQmdM X2F1eHowMF8zMDQ5ID0gCihCZ0xfYXV4ejAwXzMwNTAtKChsb25nKTEpKTsgfSAKQmdMX3Rlc3R6 MDBfMzA0OCA9IAooQmdMX3dhbGtlcnowMF80MDU8QmdMX2F1eHowMF8zMDQ5KTsgfSAKaWYoQmdM X3Rlc3R6MDBfMzA0OCkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNzIgKi8KdW5zaWduZWQgY2hh ciBCZ0xfYXV4ejAwXzMwNTQ7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDcyICovCmludCBCZ0xf YXV4ejAwXzMwNTU7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDcyICovCmxvbmcgQmdMX2F1eHow MF8zMDU2OwpCZ0xfYXV4ejAwXzMwNTYgPSAKKEJnTF93YWxrZXJ6MDBfNDA1KygobG9uZykxKSk7 IApCZ0xfYXV4ejAwXzMwNTUgPSAKKGludCkoQmdMX2F1eHowMF8zMDU2KTsgfSAKQmdMX2F1eHow MF8zMDU0ID0gClNUUklOR19SRUYoQmdMX3N0cmluZ3owMF80MDMsIEJnTF9hdXh6MDBfMzA1NSk7 IH0gCkJnTF90ZXN0ejAwXzMwNDEgPSAKKEJnTF9hdXh6MDBfMzA1ND09KCh1bnNpZ25lZCBjaGFy KSc6JykpOyB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA3MSAqLwpCZ0xfdGVzdHow MF8zMDQxID0gKChib29sX3QpMCkKOyB9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2Nt IDcwICovCkJnTF90ZXN0ejAwXzMwNDEgPSAoKGJvb2xfdCkwKQo7IH0gfSAKaWYoQmdMX3Rlc3R6 MDBfMzA0MSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNzAgKi8KeyAvKiBFdmFsL2V2Y29tcGls ZS5zY20gNzMgKi8Kb2JqX3QgQmdMX2FyZzExMDZ6MDBfNDA5Owp7IC8qIEV2YWwvZXZjb21waWxl LnNjbSA3MyAqLwppbnQgQmdMX2F1eHowMF8zMDYzO2ludCBCZ0xfYXV4ejAwXzMwNjE7CkJnTF9h dXh6MDBfMzA2MyA9IAooaW50KShCZ0xfd2Fsa2VyejAwXzQwNSk7IApCZ0xfYXV4ejAwXzMwNjEg PSAKKGludCkoKChsb25nKTApKTsgCkJnTF9hcmcxMTA2ejAwXzQwOSA9IApjX3N1YnN0cmluZyhC Z0xfc3RyaW5nejAwXzQwMywgQmdMX2F1eHowMF8zMDYxLCBCZ0xfYXV4ejAwXzMwNjMpOyB9IAp7 IC8qIEV2YWwvZXZjb21waWxlLnNjbSA3MyAqLwpjaGFyICogQmdMX2F1eHowMF8zMDY2OwpCZ0xf YXV4ejAwXzMwNjYgPSAKQlNUUklOR19UT19TVFJJTkcoQmdMX2FyZzExMDZ6MDBfNDA5KTsgCnJl dHVybiAKc3RyaW5nX3RvX3N5bWJvbChCZ0xfYXV4ejAwXzMwNjYpO30gfSB9ICBlbHNlIAp7IC8q IEV2YWwvZXZjb21waWxlLnNjbSA3MCAqLwp7IApsb25nIEJnTF93YWxrZXJ6MDBfMzA2OTsKQmdM X3dhbGtlcnowMF8zMDY5ID0gCihCZ0xfd2Fsa2VyejAwXzQwNSsoKGxvbmcpMSkpOyAKQmdMX3dh bGtlcnowMF80MDUgPSBCZ0xfd2Fsa2VyejAwXzMwNjk7IApnb3RvIEJnTF9sb29wejAwXzQwNjt9 IH0gfSB9IH0gfSB9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDYyICovCnJldHVy biBCZ0xfaWR6MDBfMzt9IH0gCn0KCgoKLyogdW50eXBlLWlkZW50KiAqLwpvYmpfdCBCR2xfdW50 eXBlemQyaWRlbnR6YTJ6NzB6el9fZXZjb21waWxlejAwKG9ial90IEJnTF9pZGVudHN6MDBfNCkK eyBBTl9PQkpFQ1Q7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDgwICovCmlmKApOVUxMUChCZ0xf aWRlbnRzejAwXzQpKQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA4MiAqLwpyZXR1cm4gQk5JTDt9 ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA4MiAqLwppZigKUEFJUlAoQmdMX2lkZW50 c3owMF80KSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gODQgKi8KeyAvKiBFdmFsL2V2Y29tcGls ZS5zY20gODUgKi8Kb2JqX3QgQmdMX2F1eHowMF8zMDc4O29ial90IEJnTF9hdXh6MDBfMzA3NTsK QmdMX2F1eHowMF8zMDc4ID0gCkJHbF91bnR5cGV6ZDJpZGVudHphMno3MHp6X19ldmNvbXBpbGV6 MDAoCkNEUihCZ0xfaWRlbnRzejAwXzQpKTsgCkJnTF9hdXh6MDBfMzA3NSA9IApCR2xfdW50eXBl emQyaWRlbnR6ZDJ6el9fZXZjb21waWxlejAwKApDQVIoQmdMX2lkZW50c3owMF80KSk7IApyZXR1 cm4gCk1BS0VfUEFJUihCZ0xfYXV4ejAwXzMwNzUsIEJnTF9hdXh6MDBfMzA3OCk7fSB9ICBlbHNl IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA4NCAqLwpyZXR1cm4gCkJHbF91bnR5cGV6ZDJpZGVu dHpkMnp6X19ldmNvbXBpbGV6MDAoQmdMX2lkZW50c3owMF80KTt9IH0gfSAKfQoKCgovKiBldmNv bXBpbGUgKi8Kb2JqX3QgQkdsX2V2Y29tcGlsZXowMHp6X19ldmNvbXBpbGV6MDAob2JqX3QgQmdM X2V4cHowMF81LCBvYmpfdCBCZ0xfZW52ejAwXzYsIG9ial90IEJnTF9nZW52ejAwXzcsIG9ial90 IEJnTF93aGVyZXowMF84LCBvYmpfdCBCZ0xfbmFtZWR6ZjN6ZjNfOSwgb2JqX3QgQmdMX2xvY3ow MF8xMCkKeyBBTl9PQkpFQ1Q7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk1ICovCnsgCm9ial90 IEJnTF9mdW56MDBfNDU2O29ial90IEJnTF9hcmdzejAwXzQ1NztvYmpfdCBCZ0xfZnVuejAwXzQ1 MztvYmpfdCBCZ0xfYXJnc3owMF80NTQ7b2JqX3QgQmdMX2Zvcm1hbHN6MDBfNDUwO29ial90IEJn TF9ib2R5ejAwXzQ1MTtvYmpfdCBCZ0xfYm9keXowMF80NDc7b2JqX3QgQmdMX3Byb3RlY3R6MDBf NDQ4O29ial90IEJnTF9lc2NhcGV6MDBfNDQ0O29ial90IEJnTF9ib2R5ejAwXzQ0NTtvYmpfdCBC Z0xfdmFyejAwXzQ0MDtvYmpfdCBCZ0xfdmFsejAwXzQ0MTtvYmpfdCBCZ0xfdmFyejAwXzQzNztv YmpfdCBCZ0xfdmFsejAwXzQzODtvYmpfdCBCZ0xfc2l6MDBfNDMxO29ial90IEJnTF9hbG9yc3ow MF80MzI7b2JqX3QgQmdMX3Npbm9uejAwXzQzMztvYmpfdCBCZ0xfYXRvbXowMF80Mjc7CmlmKApC R2xfZXF1YWx6ZjN6ZjN6el9fcjRfZXF1aXZhbGVuY2VfNl8yejAwKEJnTF9leHB6MDBfNSwgQk5J TCkpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCnJldHVybiAKQkdsX2V2Y29tcGlsZXpk MmVycm9yemQyenpfX2V2Y29tcGlsZXowMChCZ0xfbG9jejAwXzEwLCBCR2xfc3RyaW5nMTkyNnow MHp6X19ldmNvbXBpbGV6MDAsIEJHbF9zdHJpbmcxOTM0ejAwenpfX2V2Y29tcGlsZXowMCwgQk5J TCk7fSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8KaWYoClBBSVJQKEJnTF9l eHB6MDBfNSkpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCm9ial90IEJnTF9jZHJ6ZDIx NTB6ZDJfNDYzOwpCZ0xfY2RyemQyMTUwemQyXzQ2MyA9IApDRFIoQmdMX2V4cHowMF81KTsgCnsg LyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCmJvb2xfdCBCZ0xfdGVzdHowMF8zMDg5Owp7IC8q IEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpvYmpfdCBCZ0xfYXV4ejAwXzMwOTA7CkJnTF9hdXh6 MDBfMzA5MCA9IApDQVIoQmdMX2V4cHowMF81KTsgCkJnTF90ZXN0ejAwXzMwODkgPSAKKEJnTF9h dXh6MDBfMzA5MD09QkdsX3N5bWJvbDE5MzV6MDB6el9fZXZjb21waWxlejAwKTsgfSAKaWYoQmdM X3Rlc3R6MDBfMzA4OSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8KaWYoClBBSVJQKEJn TF9jZHJ6ZDIxNTB6ZDJfNDYzKSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8KQkdsX21v ZHVsZXpkMmRlY2xhcmF0aW9uejEyemMwenpfX2V2YWx6MDAoCkNEUihCZ0xfY2RyemQyMTUwemQy XzQ2MykpOyAKcmV0dXJuIEJVTlNQRUM7fSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20g OTYgKi8Kb2JqX3QgQmdMX2NhcnpkMjI4MHpkMl80Njc7CkJnTF9jYXJ6ZDIyODB6ZDJfNDY3ID0g CkNBUihCZ0xfZXhwejAwXzUpOyAKaWYoClBBSVJQKEJnTF9jYXJ6ZDIyODB6ZDJfNDY3KSkKeyAv KiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8KQmdMX2Z1bnowMF80NTYgPSBCZ0xfY2FyemQyMjgw emQyXzQ2NzsgCkJnTF9hcmdzejAwXzQ1NyA9IEJnTF9jZHJ6ZDIxNTB6ZDJfNDYzOyAKQmdMX3Rh Z3pkMjExNXpkMl80NTg6CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDIyOSAqLwpvYmpfdCBCZ0xf bG9jejAwXzg1MjtvYmpfdCBCZ0xfYWN0dWFsc3owMF84NTM7b2JqX3QgQmdMX3Byb2N6MDBfODU0 Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAyMjkgKi8KYm9vbF90IEJnTF90ZXN0MTEwMnowMF8x OTc3OwpCZ0xfdGVzdDExMDJ6MDBfMTk3NyA9IApFWFRFTkRFRF9QQUlSUChCZ0xfZXhwejAwXzUp OyAKaWYoQmdMX3Rlc3QxMTAyejAwXzE5NzcpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDIyOSAq LwpCZ0xfbG9jejAwXzg1MiA9IApDRVIoQmdMX2V4cHowMF81KTsgfSAgZWxzZSAKeyAvKiBFdmFs L2V2Y29tcGlsZS5zY20gMjI5ICovCkJnTF9sb2N6MDBfODUyID0gQmdMX2xvY3owMF8xMDsgfSB9 IAppZigKTlVMTFAoQmdMX2FyZ3N6MDBfNDU3KSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjMw ICovCkJnTF9hY3R1YWxzejAwXzg1MyA9IEJOSUw7IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBp bGUuc2NtIDIzMCAqLwpvYmpfdCBCZ0xfaGVhZDEwMTl6MDBfODU3OwpCZ0xfaGVhZDEwMTl6MDBf ODU3ID0gCk1BS0VfUEFJUihCTklMLCBCTklMKTsgCnsgCm9ial90IEJnTF9sMTAxN3owMF84NTg7 b2JqX3QgQmdMX3RhaWwxMDIwejAwXzg1OTsKQmdMX2wxMDE3ejAwXzg1OCA9IEJnTF9hcmdzejAw XzQ1NzsgCkJnTF90YWlsMTAyMHowMF84NTkgPSBCZ0xfaGVhZDEwMTl6MDBfODU3OyAKQmdMX2xu YW1lMTAxOHowMF84NjA6CmlmKApOVUxMUChCZ0xfbDEwMTd6MDBfODU4KSkKeyAvKiBFdmFsL2V2 Y29tcGlsZS5zY20gMjMwICovCkJnTF9hY3R1YWxzejAwXzg1MyA9IApDRFIoQmdMX2hlYWQxMDE5 ejAwXzg1Nyk7IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDIzMCAqLwpvYmpfdCBC Z0xfbmV3dGFpbDEwMjF6MDBfODYyOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAyMzAgKi8Kb2Jq X3QgQmdMX2F1eHowMF8zMTA5OwpCZ0xfYXV4ejAwXzMxMDkgPSAKQkdsX2V2Y29tcGlsZXowMHp6 X19ldmNvbXBpbGV6MDAoCkNBUihCZ0xfbDEwMTd6MDBfODU4KSwgQmdMX2VudnowMF82LCBCZ0xf Z2VudnowMF83LCBCZ0xfd2hlcmV6MDBfOCwgQkZBTFNFLCBCZ0xfbG9jejAwXzEwKTsgCkJnTF9u ZXd0YWlsMTAyMXowMF84NjIgPSAKTUFLRV9QQUlSKEJnTF9hdXh6MDBfMzEwOSwgQk5JTCk7IH0g ClNFVF9DRFIoQmdMX3RhaWwxMDIwejAwXzg1OSwgQmdMX25ld3RhaWwxMDIxejAwXzg2Mik7IAp7 IApvYmpfdCBCZ0xfdGFpbDEwMjB6MDBfMzExNjtvYmpfdCBCZ0xfbDEwMTd6MDBfMzExNDsKQmdM X2wxMDE3ejAwXzMxMTQgPSAKQ0RSKEJnTF9sMTAxN3owMF84NTgpOyAKQmdMX3RhaWwxMDIwejAw XzMxMTYgPSBCZ0xfbmV3dGFpbDEwMjF6MDBfODYyOyAKQmdMX3RhaWwxMDIwejAwXzg1OSA9IEJn TF90YWlsMTAyMHowMF8zMTE2OyAKQmdMX2wxMDE3ejAwXzg1OCA9IEJnTF9sMTAxN3owMF8zMTE0 OyAKZ290byBCZ0xfbG5hbWUxMDE4ejAwXzg2MDt9IH0gfSB9IApCZ0xfcHJvY3owMF84NTQgPSAK QkdsX2V2Y29tcGlsZXowMHp6X19ldmNvbXBpbGV6MDAoQmdMX2Z1bnowMF80NTYsIEJnTF9lbnZ6 MDBfNiwgQmdMX2dlbnZ6MDBfNywgQmdMX3doZXJlejAwXzgsIEJGQUxTRSwgQmdMX2xvY3owMF8x MCk7IApyZXR1cm4gCkJHbF9ldmNvbXBpbGV6ZDJhcHBsaWNhdGlvbnpkMnp6X19ldmNvbXBpbGV6 MDAoQmdMX2Z1bnowMF80NTYsIEJnTF9wcm9jejAwXzg1NCwgQmdMX2FjdHVhbHN6MDBfODUzLCBC Z0xfbG9jejAwXzg1Mik7fSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpC Z0xfZnVuejAwXzQ1MyA9IEJnTF9jYXJ6ZDIyODB6ZDJfNDY3OyAKQmdMX2FyZ3N6MDBfNDU0ID0g QmdMX2NkcnpkMjE1MHpkMl80NjM7IApCZ0xfdGFnemQyMTE0emQyXzQ1NToKeyAvKiBFdmFsL2V2 Y29tcGlsZS5zY20gMjA3ICovCm9ial90IEJnTF9sb2N6MDBfODI1Owp7IC8qIEV2YWwvZXZjb21w aWxlLnNjbSAyMDcgKi8KYm9vbF90IEJnTF90ZXN0MTEwMnowMF8xOTQwOwpCZ0xfdGVzdDExMDJ6 MDBfMTk0MCA9IApFWFRFTkRFRF9QQUlSUChCZ0xfZXhwejAwXzUpOyAKaWYoQmdMX3Rlc3QxMTAy ejAwXzE5NDApCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDIwNyAqLwpCZ0xfbG9jejAwXzgyNSA9 IApDRVIoQmdMX2V4cHowMF81KTsgfSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjA3 ICovCkJnTF9sb2N6MDBfODI1ID0gQmdMX2xvY3owMF8xMDsgfSB9IAp7IC8qIEV2YWwvZXZjb21w aWxlLnNjbSAyMDcgKi8Kb2JqX3QgQmdMX2FjdHVhbHN6MDBfODI2OwppZigKTlVMTFAoQmdMX2Fy Z3N6MDBfNDU0KSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjA4ICovCkJnTF9hY3R1YWxzejAw XzgyNiA9IEJOSUw7IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDIwOCAqLwpvYmpf dCBCZ0xfaGVhZDEwMTN6MDBfODQyOwpCZ0xfaGVhZDEwMTN6MDBfODQyID0gCk1BS0VfUEFJUihC TklMLCBCTklMKTsgCnsgCm9ial90IEJnTF9sMTAxMXowMF84NDM7b2JqX3QgQmdMX3RhaWwxMDE0 ejAwXzg0NDsKQmdMX2wxMDExejAwXzg0MyA9IEJnTF9hcmdzejAwXzQ1NDsgCkJnTF90YWlsMTAx NHowMF84NDQgPSBCZ0xfaGVhZDEwMTN6MDBfODQyOyAKQmdMX2xuYW1lMTAxMnowMF84NDU6Cmlm KApOVUxMUChCZ0xfbDEwMTF6MDBfODQzKSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjA4ICov CkJnTF9hY3R1YWxzejAwXzgyNiA9IApDRFIoQmdMX2hlYWQxMDEzejAwXzg0Mik7IH0gIGVsc2Ug CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDIwOCAqLwpvYmpfdCBCZ0xfbmV3dGFpbDEwMTV6MDBf ODQ3Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAyMDggKi8Kb2JqX3QgQmdMX2F1eHowMF8zMTI4 OwpCZ0xfYXV4ejAwXzMxMjggPSAKQkdsX2V2Y29tcGlsZXowMHp6X19ldmNvbXBpbGV6MDAoCkNB UihCZ0xfbDEwMTF6MDBfODQzKSwgQmdMX2VudnowMF82LCBCZ0xfZ2VudnowMF83LCBCZ0xfd2hl cmV6MDBfOCwgQkZBTFNFLCBCZ0xfbG9jejAwXzgyNSk7IApCZ0xfbmV3dGFpbDEwMTV6MDBfODQ3 ID0gCk1BS0VfUEFJUihCZ0xfYXV4ejAwXzMxMjgsIEJOSUwpOyB9IApTRVRfQ0RSKEJnTF90YWls MTAxNHowMF84NDQsIEJnTF9uZXd0YWlsMTAxNXowMF84NDcpOyAKeyAKb2JqX3QgQmdMX3RhaWwx MDE0ejAwXzMxMzU7b2JqX3QgQmdMX2wxMDExejAwXzMxMzM7CkJnTF9sMTAxMXowMF8zMTMzID0g CkNEUihCZ0xfbDEwMTF6MDBfODQzKTsgCkJnTF90YWlsMTAxNHowMF8zMTM1ID0gQmdMX25ld3Rh aWwxMDE1ejAwXzg0NzsgCkJnTF90YWlsMTAxNHowMF84NDQgPSBCZ0xfdGFpbDEwMTR6MDBfMzEz NTsgCkJnTF9sMTAxMXowMF84NDMgPSBCZ0xfbDEwMTF6MDBfMzEzMzsgCmdvdG8gQmdMX2xuYW1l MTAxMnowMF84NDU7fSB9IH0gfSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjA4ICovCgppZigK U1lNQk9MUChCZ0xfZnVuejAwXzQ1MykpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDIxMSAqLwp7 IC8qIEV2YWwvZXZjb21waWxlLnNjbSAyMTIgKi8Kb2JqX3QgQmdMX3Byb2N6MDBfODI4OwpCZ0xf cHJvY3owMF84MjggPSAKQkdsX3ZhcmlhYmxlejAwenpfX2V2Y29tcGlsZXowMChCZ0xfbG9jejAw XzgyNSwgQmdMX2Z1bnowMF80NTMsIEJnTF9lbnZ6MDBfNiwgQmdMX2dlbnZ6MDBfNyk7IAp7IC8q IEV2YWwvZXZjb21waWxlLnNjbSAyMTQgKi8KYm9vbF90IEJnTF90ZXN0MTQ1NXowMF84Mjk7Cmlm KApWRUNUT1JQKEJnTF9wcm9jejAwXzgyOCkpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDIxNCAq LwppbnQgQmdMX2FyZzE3ODN6MDBfMTk1NzsKQmdMX2FyZzE3ODN6MDBfMTk1NyA9IApWRUNUT1Jf TEVOR1RIKEJnTF9wcm9jejAwXzgyOCk7IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAyMTQgKi8K bG9uZyBCZ0xfYXV4ejAwXzMxNDI7CkJnTF9hdXh6MDBfMzE0MiA9IAoobG9uZykoQmdMX2FyZzE3 ODN6MDBfMTk1Nyk7IApCZ0xfdGVzdDE0NTV6MDBfODI5ID0gCihCZ0xfYXV4ejAwXzMxNDI9PSgo bG9uZykzKSk7IH0gfSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjE0ICovCkJnTF90 ZXN0MTQ1NXowMF84MjkgPSAoKGJvb2xfdCkwKTsgfSAKaWYoQmdMX3Rlc3QxNDU1ejAwXzgyOSkK eyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjE0ICovCnJldHVybiAKQkdsX2V2Y29tcGlsZXpkMmds b2JhbHpkMmFwcGxpY2F0aW9uejAwenpfX2V2Y29tcGlsZXowMChCZ0xfcHJvY3owMF84MjgsIEJn TF9hY3R1YWxzejAwXzgyNiwgQmdMX2xvY3owMF84MjUpO30gIGVsc2UgCnsgLyogRXZhbC9ldmNv bXBpbGUuc2NtIDIxNCAqLwpyZXR1cm4gCkJHbF9ldmNvbXBpbGV6ZDJhcHBsaWNhdGlvbnpkMnp6 X19ldmNvbXBpbGV6MDAoQmdMX2Z1bnowMF80NTMsIApCR2xfZXZjb21waWxlemQycmVmemQyenpf X2V2Y29tcGlsZXowMChCZ0xfcHJvY3owMF84MjgsIEJnTF9sb2N6MDBfODI1KSwgQmdMX2FjdHVh bHN6MDBfODI2LCBCZ0xfbG9jejAwXzgyNSk7fSB9IH0gfSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29t cGlsZS5zY20gMjExICovCmlmKApQUk9DRURVUkVQKEJnTF9mdW56MDBfNDUzKSkKeyAvKiBFdmFs L2V2Y29tcGlsZS5zY20gMjIxICovCnJldHVybiAKQkdsX2V2Y29tcGlsZXpkMmNvbXBpbGVkemQy YXBwbGljYXRpb256MDB6el9fZXZjb21waWxlejAwKEJnTF9mdW56MDBfNDUzLCBCZ0xfYWN0dWFs c3owMF84MjYsIEJnTF9sb2N6MDBfODI1KTt9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNj bSAyMjEgKi8KQkdsX2V2Y29tcGlsZXpkMmVycm9yemQyenpfX2V2Y29tcGlsZXowMChCZ0xfbG9j ejAwXzgyNSwgQkdsX3N0cmluZzE5MjZ6MDB6el9fZXZjb21waWxlejAwLCBCR2xfc3RyaW5nMTkz M3owMHp6X19ldmNvbXBpbGV6MDAsIEJnTF9mdW56MDBfNDUzKTsgCnsgLyogRXZhbC9ldmNvbXBp bGUuc2NtIDIyNSAqLwpvYmpfdCBCZ0xfdjEwMTZ6MDBfODMyOwp7IAppbnQgQmdMX2F1eHowMF8z MTUzOwpCZ0xfYXV4ejAwXzMxNTMgPSAKKGludCkoKChsb25nKTMpKTsgCkJnTF92MTAxNnowMF84 MzIgPSAKY3JlYXRlX3ZlY3RvcihCZ0xfYXV4ejAwXzMxNTMpOyB9IAp7IC8qIEV2YWwvZXZjb21w aWxlLnNjbSAyMjUgKi8Kb2JqX3QgQmdMX2FyZzE0NjB6MDBfODM0Owp7IC8qIEV2YWwvZXZjb21w aWxlLnNjbSAyMjcgKi8Kb2JqX3QgQmdMX2xpc3QxNDYxejAwXzgzNTsKeyAvKiBFdmFsL2V2Y29t cGlsZS5zY20gMjI3ICovCm9ial90IEJnTF9hcmcxNDYzejAwXzgzNzsKeyAvKiBFdmFsL2V2Y29t cGlsZS5zY20gMjI3ICovCm9ial90IEJnTF9hcmcxNDY1ejAwXzgzOTsKQmdMX2FyZzE0NjV6MDBf ODM5ID0gCk1BS0VfUEFJUihCZ0xfZnVuejAwXzQ1MywgQk5JTCk7IApCZ0xfYXJnMTQ2M3owMF84 MzcgPSAKTUFLRV9QQUlSKEJHbF9zdHJpbmcxOTMzejAwenpfX2V2Y29tcGlsZXowMCwgQmdMX2Fy ZzE0NjV6MDBfODM5KTsgfSAKQmdMX2xpc3QxNDYxejAwXzgzNSA9IApNQUtFX1BBSVIoQkdsX3N0 cmluZzE5MjZ6MDB6el9fZXZjb21waWxlejAwLCBCZ0xfYXJnMTQ2M3owMF84MzcpOyB9IApCZ0xf YXJnMTQ2MHowMF84MzQgPSBCZ0xfbGlzdDE0NjF6MDBfODM1OyB9IAp7IAppbnQgQmdMX2F1eHow MF8zMTU5OwpCZ0xfYXV4ejAwXzMxNTkgPSAKKGludCkoKChsb25nKTIpKTsgClZFQ1RPUl9TRVQo QmdMX3YxMDE2ejAwXzgzMixCZ0xfYXV4ejAwXzMxNTksQmdMX2FyZzE0NjB6MDBfODM0KTsgfSB9 IAp7IAppbnQgQmdMX2F1eHowMF8zMTYyOwpCZ0xfYXV4ejAwXzMxNjIgPSAKKGludCkoKChsb25n KTEpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDE2ejAwXzgzMixCZ0xfYXV4ejAwXzMxNjIsQmdMX2xv Y3owMF84MjUpOyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzMxNjc7aW50IEJnTF9hdXh6MDBfMzE2 NTsKQmdMX2F1eHowMF8zMTY3ID0gCkJJTlQoKChsb25nKS0yKSk7IApCZ0xfYXV4ejAwXzMxNjUg PSAKKGludCkoKChsb25nKTApKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDE2ejAwXzgzMixCZ0xfYXV4 ejAwXzMxNjUsQmdMX2F1eHowMF8zMTY3KTsgfSAKcmV0dXJuIEJnTF92MTAxNnowMF84MzI7fSB9 IH0gfSB9IH0gfSB9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCmJvb2xf dCBCZ0xfdGVzdHowMF8zMTcwOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpvYmpfdCBC Z0xfYXV4ejAwXzMxNzE7CkJnTF9hdXh6MDBfMzE3MSA9IApDQVIoQmdMX2V4cHowMF81KTsgCkJn TF90ZXN0ejAwXzMxNzAgPSAKKEJnTF9hdXh6MDBfMzE3MT09QkdsX3N5bWJvbDE5MzZ6MDB6el9f ZXZjb21waWxlejAwKTsgfSAKaWYoQmdMX3Rlc3R6MDBfMzE3MCkKeyAvKiBFdmFsL2V2Y29tcGls ZS5zY20gOTYgKi8KcmV0dXJuIEJVTlNQRUM7fSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5z Y20gOTYgKi8KYm9vbF90IEJnTF90ZXN0ejAwXzMxNzQ7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2Nt IDk2ICovCm9ial90IEJnTF9hdXh6MDBfMzE3NTsKQmdMX2F1eHowMF8zMTc1ID0gCkNBUihCZ0xf ZXhwejAwXzUpOyAKQmdMX3Rlc3R6MDBfMzE3NCA9IAooQmdMX2F1eHowMF8zMTc1PT1CR2xfc3lt Ym9sMTkzN3owMHp6X19ldmNvbXBpbGV6MDApOyB9IAppZihCZ0xfdGVzdHowMF8zMTc0KQp7IC8q IEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwppZigKUEFJUlAoQmdMX2NkcnpkMjE1MHpkMl80NjMp KQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwppZigKQkdsX2VxdWFsemYzemYzenpfX3I0 X2VxdWl2YWxlbmNlXzZfMnowMCgKQ0RSKEJnTF9jZHJ6ZDIxNTB6ZDJfNDYzKSwgQk5JTCkpCnsg LyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCm9ial90IEJnTF9hcmcxMTM1ejAwXzQ3NzsKQmdM X2FyZzExMzV6MDBfNDc3ID0gCkNBUihCZ0xfY2RyemQyMTUwemQyXzQ2Myk7IAp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSA5NiAqLwpvYmpfdCBCZ0xfYXJnMTM4NnowMF8xNDU4Owp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSA5NiAqLwpib29sX3QgQmdMX3Rlc3QxMTAyejAwXzE0NjE7CkJnTF90ZXN0 MTEwMnowMF8xNDYxID0gCkVYVEVOREVEX1BBSVJQKEJnTF9leHB6MDBfNSk7IAppZihCZ0xfdGVz dDExMDJ6MDBfMTQ2MSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8KQmdMX2FyZzEzODZ6 MDBfMTQ1OCA9IApDRVIoQmdMX2V4cHowMF81KTsgfSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGls ZS5zY20gOTYgKi8KQmdMX2FyZzEzODZ6MDBfMTQ1OCA9IEJnTF9sb2N6MDBfMTA7IH0gfSAKcmV0 dXJuIApCR2xfZXZjb21waWxlemQyY25zdHpkMnp6X19ldmNvbXBpbGV6MDAoQmdMX2FyZzExMzV6 MDBfNDc3LCBCZ0xfYXJnMTM4NnowMF8xNDU4KTt9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBp bGUuc2NtIDk2ICovCm9ial90IEJnTF9jYXJ6ZDI0MzF6ZDJfNDc4OwpCZ0xfY2FyemQyNDMxemQy XzQ3OCA9IApDQVIoQmdMX2V4cHowMF81KTsgCmlmKApQQUlSUChCZ0xfY2FyemQyNDMxemQyXzQ3 OCkpCnsgCm9ial90IEJnTF9hcmdzejAwXzMxOTI7b2JqX3QgQmdMX2Z1bnowMF8zMTkxOwpCZ0xf ZnVuejAwXzMxOTEgPSBCZ0xfY2FyemQyNDMxemQyXzQ3ODsgCkJnTF9hcmdzejAwXzMxOTIgPSAK Q0RSKEJnTF9leHB6MDBfNSk7IApCZ0xfYXJnc3owMF80NTcgPSBCZ0xfYXJnc3owMF8zMTkyOyAK QmdMX2Z1bnowMF80NTYgPSBCZ0xfZnVuejAwXzMxOTE7IApnb3RvIEJnTF90YWd6ZDIxMTV6ZDJf NDU4O30gIGVsc2UgCnsgCm9ial90IEJnTF9hcmdzejAwXzMxOTU7b2JqX3QgQmdMX2Z1bnowMF8z MTk0OwpCZ0xfZnVuejAwXzMxOTQgPSBCZ0xfY2FyemQyNDMxemQyXzQ3ODsgCkJnTF9hcmdzejAw XzMxOTUgPSAKQ0RSKEJnTF9leHB6MDBfNSk7IApCZ0xfYXJnc3owMF80NTQgPSBCZ0xfYXJnc3ow MF8zMTk1OyAKQmdMX2Z1bnowMF80NTMgPSBCZ0xfZnVuejAwXzMxOTQ7IApnb3RvIEJnTF90YWd6 ZDIxMTR6ZDJfNDU1O30gfSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpv YmpfdCBCZ0xfY2FyemQyNTI4emQyXzQ4NTsKQmdMX2NhcnpkMjUyOHpkMl80ODUgPSAKQ0FSKEJn TF9leHB6MDBfNSk7IAppZigKUEFJUlAoQmdMX2NhcnpkMjUyOHpkMl80ODUpKQp7IApvYmpfdCBC Z0xfYXJnc3owMF8zMjAxO29ial90IEJnTF9mdW56MDBfMzIwMDsKQmdMX2Z1bnowMF8zMjAwID0g QmdMX2NhcnpkMjUyOHpkMl80ODU7IApCZ0xfYXJnc3owMF8zMjAxID0gCkNEUihCZ0xfZXhwejAw XzUpOyAKQmdMX2FyZ3N6MDBfNDU3ID0gQmdMX2FyZ3N6MDBfMzIwMTsgCkJnTF9mdW56MDBfNDU2 ID0gQmdMX2Z1bnowMF8zMjAwOyAKZ290byBCZ0xfdGFnemQyMTE1emQyXzQ1ODt9ICBlbHNlIAp7 IApvYmpfdCBCZ0xfYXJnc3owMF8zMjA0O29ial90IEJnTF9mdW56MDBfMzIwMzsKQmdMX2Z1bnow MF8zMjAzID0gQmdMX2NhcnpkMjUyOHpkMl80ODU7IApCZ0xfYXJnc3owMF8zMjA0ID0gCkNEUihC Z0xfZXhwejAwXzUpOyAKQmdMX2FyZ3N6MDBfNDU0ID0gQmdMX2FyZ3N6MDBfMzIwNDsgCkJnTF9m dW56MDBfNDUzID0gQmdMX2Z1bnowMF8zMjAzOyAKZ290byBCZ0xfdGFnemQyMTE0emQyXzQ1NTt9 IH0gfSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8Kb2JqX3QgQmdMX2Nkcnpk MjU2MHpkMl80OTA7CkJnTF9jZHJ6ZDI1NjB6ZDJfNDkwID0gCkNEUihCZ0xfZXhwejAwXzUpOyAK eyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8KYm9vbF90IEJnTF90ZXN0ejAwXzMyMDc7Cnsg LyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCm9ial90IEJnTF9hdXh6MDBfMzIwODsKQmdMX2F1 eHowMF8zMjA4ID0gCkNBUihCZ0xfZXhwejAwXzUpOyAKQmdMX3Rlc3R6MDBfMzIwNyA9IAooQmdM X2F1eHowMF8zMjA4PT1CR2xfc3ltYm9sMTkzOHowMHp6X19ldmNvbXBpbGV6MDApOyB9IAppZihC Z0xfdGVzdHowMF8zMjA3KQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwppZigKUEFJUlAo QmdMX2NkcnpkMjU2MHpkMl80OTApKQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpvYmpf dCBCZ0xfY2RyemQyNTY1emQyXzQ5MzsKQmdMX2NkcnpkMjU2NXpkMl80OTMgPSAKQ0RSKEJnTF9j ZHJ6ZDI1NjB6ZDJfNDkwKTsgCmlmKApQQUlSUChCZ0xfY2RyemQyNTY1emQyXzQ5MykpCnsgLyog RXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCm9ial90IEJnTF9jZHJ6ZDI1NzB6ZDJfNDk1OwpCZ0xf Y2RyemQyNTcwemQyXzQ5NSA9IApDRFIoQmdMX2NkcnpkMjU2NXpkMl80OTMpOyAKaWYoClBBSVJQ KEJnTF9jZHJ6ZDI1NzB6ZDJfNDk1KSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8KaWYo CkJHbF9lcXVhbHpmM3pmM3p6X19yNF9lcXVpdmFsZW5jZV82XzJ6MDAoCkNEUihCZ0xfY2RyemQy NTcwemQyXzQ5NSksIEJOSUwpKQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpCZ0xfc2l6 MDBfNDMxID0gCkNBUihCZ0xfY2RyemQyNTYwemQyXzQ5MCk7IApCZ0xfYWxvcnN6MDBfNDMyID0g CkNBUihCZ0xfY2RyemQyNTY1emQyXzQ5Myk7IApCZ0xfc2lub256MDBfNDMzID0gCkNBUihCZ0xf Y2RyemQyNTcwemQyXzQ5NSk7IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxMTkgKi8Kb2JqX3Qg QmdMX2xvY3owMF83NDI7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDExOSAqLwpib29sX3QgQmdM X3Rlc3QxMTAyejAwXzE3MTk7CkJnTF90ZXN0MTEwMnowMF8xNzE5ID0gCkVYVEVOREVEX1BBSVJQ KEJnTF9leHB6MDBfNSk7IAppZihCZ0xfdGVzdDExMDJ6MDBfMTcxOSkKeyAvKiBFdmFsL2V2Y29t cGlsZS5zY20gMTE5ICovCkJnTF9sb2N6MDBfNzQyID0gCkNFUihCZ0xfZXhwejAwXzUpOyB9ICBl bHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxMTkgKi8KQmdMX2xvY3owMF83NDIgPSBCZ0xf bG9jejAwXzEwOyB9IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDEyMSAqLwpvYmpfdCBCZ0xf YXJnMTM4N3owMF83NDM7b2JqX3QgQmdMX2FyZzEzODh6MDBfNzQ0O29ial90IEJnTF9hcmcxMzg5 ejAwXzc0NTsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTIxICovCm9ial90IEJnTF9hcmcxMzkw ejAwXzc0NjsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTIxICovCmJvb2xfdCBCZ0xfdGVzdDEx MDJ6MDBfMTcyNDsKQmdMX3Rlc3QxMTAyejAwXzE3MjQgPSAKRVhURU5ERURfUEFJUlAoQmdMX3Np ejAwXzQzMSk7IAppZihCZ0xfdGVzdDExMDJ6MDBfMTcyNCkKeyAvKiBFdmFsL2V2Y29tcGlsZS5z Y20gMTIxICovCkJnTF9hcmcxMzkwejAwXzc0NiA9IApDRVIoQmdMX3NpejAwXzQzMSk7IH0gIGVs c2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDEyMSAqLwpCZ0xfYXJnMTM5MHowMF83NDYgPSBC Z0xfbG9jejAwXzc0MjsgfSB9IApCZ0xfYXJnMTM4N3owMF83NDMgPSAKQkdsX2V2Y29tcGlsZXow MHp6X19ldmNvbXBpbGV6MDAoQmdMX3NpejAwXzQzMSwgQmdMX2VudnowMF82LCBCZ0xfZ2Vudnow MF83LCBCZ0xfd2hlcmV6MDBfOCwgQkZBTFNFLCBCZ0xfYXJnMTM5MHowMF83NDYpOyB9IAp7IC8q IEV2YWwvZXZjb21waWxlLnNjbSAxMjMgKi8Kb2JqX3QgQmdMX2FyZzEzOTF6MDBfNzQ3Owp7IC8q IEV2YWwvZXZjb21waWxlLnNjbSAxMjMgKi8KYm9vbF90IEJnTF90ZXN0MTEwMnowMF8xNzI5OwpC Z0xfdGVzdDExMDJ6MDBfMTcyOSA9IApFWFRFTkRFRF9QQUlSUChCZ0xfYWxvcnN6MDBfNDMyKTsg CmlmKEJnTF90ZXN0MTEwMnowMF8xNzI5KQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxMjMgKi8K QmdMX2FyZzEzOTF6MDBfNzQ3ID0gCkNFUihCZ0xfYWxvcnN6MDBfNDMyKTsgfSAgZWxzZSAKeyAv KiBFdmFsL2V2Y29tcGlsZS5zY20gMTIzICovCkJnTF9hcmcxMzkxejAwXzc0NyA9IEJnTF9sb2N6 MDBfNzQyOyB9IH0gCkJnTF9hcmcxMzg4ejAwXzc0NCA9IApCR2xfZXZjb21waWxlejAwenpfX2V2 Y29tcGlsZXowMChCZ0xfYWxvcnN6MDBfNDMyLCBCZ0xfZW52ejAwXzYsIEJnTF9nZW52ejAwXzcs IEJnTF93aGVyZXowMF84LCBCZ0xfbmFtZWR6ZjN6ZjNfOSwgQmdMX2FyZzEzOTF6MDBfNzQ3KTsg fSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTI1ICovCm9ial90IEJnTF9hcmcxMzkzejAwXzc0 ODsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTI1ICovCmJvb2xfdCBCZ0xfdGVzdDExMDJ6MDBf MTczNDsKQmdMX3Rlc3QxMTAyejAwXzE3MzQgPSAKRVhURU5ERURfUEFJUlAoQmdMX3Npbm9uejAw XzQzMyk7IAppZihCZ0xfdGVzdDExMDJ6MDBfMTczNCkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20g MTI1ICovCkJnTF9hcmcxMzkzejAwXzc0OCA9IApDRVIoQmdMX3Npbm9uejAwXzQzMyk7IH0gIGVs c2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDEyNSAqLwpCZ0xfYXJnMTM5M3owMF83NDggPSBC Z0xfbG9jejAwXzc0MjsgfSB9IApCZ0xfYXJnMTM4OXowMF83NDUgPSAKQkdsX2V2Y29tcGlsZXow MHp6X19ldmNvbXBpbGV6MDAoQmdMX3Npbm9uejAwXzQzMywgQmdMX2VudnowMF82LCBCZ0xfZ2Vu dnowMF83LCBCZ0xfd2hlcmV6MDBfOCwgQmdMX25hbWVkemYzemYzXzksIEJnTF9hcmcxMzkzejAw Xzc0OCk7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDEyMCAqLwpvYmpfdCBCZ0xfdjEwMzV6 MDBfMTc0MTsKeyAKaW50IEJnTF9hdXh6MDBfMzIzNzsKQmdMX2F1eHowMF8zMjM3ID0gCihpbnQp KCgobG9uZykzKSk7IApCZ0xfdjEwMzV6MDBfMTc0MSA9IApjcmVhdGVfdmVjdG9yKEJnTF9hdXh6 MDBfMzIzNyk7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDEyMCAqLwpvYmpfdCBCZ0xfYXJn MTUwNHowMF8xNzQzOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxMjAgKi8Kb2JqX3QgQmdMX3Yx MDM2ejAwXzE3NDQ7CnsgCmludCBCZ0xfYXV4ejAwXzMyNDA7CkJnTF9hdXh6MDBfMzI0MCA9IAoo aW50KSgoKGxvbmcpMykpOyAKQmdMX3YxMDM2ejAwXzE3NDQgPSAKY3JlYXRlX3ZlY3RvcihCZ0xf YXV4ejAwXzMyNDApOyB9IAp7IAppbnQgQmdMX2F1eHowMF8zMjQzOwpCZ0xfYXV4ejAwXzMyNDMg PSAKKGludCkoKChsb25nKTIpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDM2ejAwXzE3NDQsQmdMX2F1 eHowMF8zMjQzLEJnTF9hcmcxMzg5ejAwXzc0NSk7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzMyNDY7 CkJnTF9hdXh6MDBfMzI0NiA9IAooaW50KSgoKGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEw MzZ6MDBfMTc0NCxCZ0xfYXV4ejAwXzMyNDYsQmdMX2FyZzEzODh6MDBfNzQ0KTsgfSAKeyAKaW50 IEJnTF9hdXh6MDBfMzI0OTsKQmdMX2F1eHowMF8zMjQ5ID0gCihpbnQpKCgobG9uZykwKSk7IApW RUNUT1JfU0VUKEJnTF92MTAzNnowMF8xNzQ0LEJnTF9hdXh6MDBfMzI0OSxCZ0xfYXJnMTM4N3ow MF83NDMpOyB9IApCZ0xfYXJnMTUwNHowMF8xNzQzID0gQmdMX3YxMDM2ejAwXzE3NDQ7IH0gCnsg CmludCBCZ0xfYXV4ejAwXzMyNTI7CkJnTF9hdXh6MDBfMzI1MiA9IAooaW50KSgoKGxvbmcpMikp OyAKVkVDVE9SX1NFVChCZ0xfdjEwMzV6MDBfMTc0MSxCZ0xfYXV4ejAwXzMyNTIsQmdMX2FyZzE1 MDR6MDBfMTc0Myk7IH0gfSAKeyAKaW50IEJnTF9hdXh6MDBfMzI1NTsKQmdMX2F1eHowMF8zMjU1 ID0gCihpbnQpKCgobG9uZykxKSk7IApWRUNUT1JfU0VUKEJnTF92MTAzNXowMF8xNzQxLEJnTF9h dXh6MDBfMzI1NSxCZ0xfbG9jejAwXzc0Mik7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfMzI2MDtp bnQgQmdMX2F1eHowMF8zMjU4OwpCZ0xfYXV4ejAwXzMyNjAgPSAKQklOVCgoKGxvbmcpMTUpKTsg CkJnTF9hdXh6MDBfMzI1OCA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEw MzV6MDBfMTc0MSxCZ0xfYXV4ejAwXzMyNTgsQmdMX2F1eHowMF8zMjYwKTsgfSAKcmV0dXJuIEJn TF92MTAzNXowMF8xNzQxO30gfSB9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2 ICovCm9ial90IEJnTF9jYXJ6ZDI2NDJ6ZDJfNTAxOwpCZ0xfY2FyemQyNjQyemQyXzUwMSA9IApD QVIoQmdMX2V4cHowMF81KTsgCmlmKApQQUlSUChCZ0xfY2FyemQyNjQyemQyXzUwMSkpCnsgCm9i al90IEJnTF9hcmdzejAwXzMyNzA7b2JqX3QgQmdMX2Z1bnowMF8zMjY5OwpCZ0xfZnVuejAwXzMy NjkgPSBCZ0xfY2FyemQyNjQyemQyXzUwMTsgCkJnTF9hcmdzejAwXzMyNzAgPSBCZ0xfY2RyemQy NTYwemQyXzQ5MDsgCkJnTF9hcmdzejAwXzQ1NyA9IEJnTF9hcmdzejAwXzMyNzA7IApCZ0xfZnVu ejAwXzQ1NiA9IEJnTF9mdW56MDBfMzI2OTsgCmdvdG8gQmdMX3RhZ3pkMjExNXpkMl80NTg7fSAg ZWxzZSAKeyAKb2JqX3QgQmdMX2FyZ3N6MDBfMzI3MjtvYmpfdCBCZ0xfZnVuejAwXzMyNzE7CkJn TF9mdW56MDBfMzI3MSA9IEJnTF9jYXJ6ZDI2NDJ6ZDJfNTAxOyAKQmdMX2FyZ3N6MDBfMzI3MiA9 IEJnTF9jZHJ6ZDI1NjB6ZDJfNDkwOyAKQmdMX2FyZ3N6MDBfNDU0ID0gQmdMX2FyZ3N6MDBfMzI3 MjsgCkJnTF9mdW56MDBfNDUzID0gQmdMX2Z1bnowMF8zMjcxOyAKZ290byBCZ0xfdGFnemQyMTE0 emQyXzQ1NTt9IH0gfSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8Kb2JqX3Qg QmdMX2NhcnpkMjcyNHpkMl81MDg7CkJnTF9jYXJ6ZDI3MjR6ZDJfNTA4ID0gCkNBUihCZ0xfZXhw ejAwXzUpOyAKaWYoClBBSVJQKEJnTF9jYXJ6ZDI3MjR6ZDJfNTA4KSkKeyAKb2JqX3QgQmdMX2Fy Z3N6MDBfMzI3NztvYmpfdCBCZ0xfZnVuejAwXzMyNzY7CkJnTF9mdW56MDBfMzI3NiA9IEJnTF9j YXJ6ZDI3MjR6ZDJfNTA4OyAKQmdMX2FyZ3N6MDBfMzI3NyA9IEJnTF9jZHJ6ZDI1NjB6ZDJfNDkw OyAKQmdMX2FyZ3N6MDBfNDU3ID0gQmdMX2FyZ3N6MDBfMzI3NzsgCkJnTF9mdW56MDBfNDU2ID0g QmdMX2Z1bnowMF8zMjc2OyAKZ290byBCZ0xfdGFnemQyMTE1emQyXzQ1ODt9ICBlbHNlIAp7IApv YmpfdCBCZ0xfYXJnc3owMF8zMjc5O29ial90IEJnTF9mdW56MDBfMzI3ODsKQmdMX2Z1bnowMF8z Mjc4ID0gQmdMX2NhcnpkMjcyNHpkMl81MDg7IApCZ0xfYXJnc3owMF8zMjc5ID0gQmdMX2Nkcnpk MjU2MHpkMl80OTA7IApCZ0xfYXJnc3owMF80NTQgPSBCZ0xfYXJnc3owMF8zMjc5OyAKQmdMX2Z1 bnowMF80NTMgPSBCZ0xfZnVuejAwXzMyNzg7IApnb3RvIEJnTF90YWd6ZDIxMTR6ZDJfNDU1O30g fSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpvYmpfdCBCZ0xfY2FyemQy ODA2emQyXzUxMzsKQmdMX2NhcnpkMjgwNnpkMl81MTMgPSAKQ0FSKEJnTF9leHB6MDBfNSk7IApp ZigKUEFJUlAoQmdMX2NhcnpkMjgwNnpkMl81MTMpKQp7IApvYmpfdCBCZ0xfYXJnc3owMF8zMjg0 O29ial90IEJnTF9mdW56MDBfMzI4MzsKQmdMX2Z1bnowMF8zMjgzID0gQmdMX2NhcnpkMjgwNnpk Ml81MTM7IApCZ0xfYXJnc3owMF8zMjg0ID0gQmdMX2NkcnpkMjU2MHpkMl80OTA7IApCZ0xfYXJn c3owMF80NTcgPSBCZ0xfYXJnc3owMF8zMjg0OyAKQmdMX2Z1bnowMF80NTYgPSBCZ0xfZnVuejAw XzMyODM7IApnb3RvIEJnTF90YWd6ZDIxMTV6ZDJfNDU4O30gIGVsc2UgCnsgCm9ial90IEJnTF9h cmdzejAwXzMyODY7b2JqX3QgQmdMX2Z1bnowMF8zMjg1OwpCZ0xfZnVuejAwXzMyODUgPSBCZ0xf Y2FyemQyODA2emQyXzUxMzsgCkJnTF9hcmdzejAwXzMyODYgPSBCZ0xfY2RyemQyNTYwemQyXzQ5 MDsgCkJnTF9hcmdzejAwXzQ1NCA9IEJnTF9hcmdzejAwXzMyODY7IApCZ0xfZnVuejAwXzQ1MyA9 IEJnTF9mdW56MDBfMzI4NTsgCmdvdG8gQmdMX3RhZ3pkMjExNHpkMl80NTU7fSB9IH0gIGVsc2Ug CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCm9ial90IEJnTF9jYXJ6ZDI4ODh6ZDJfNTE4 OwpCZ0xfY2FyemQyODg4emQyXzUxOCA9IApDQVIoQmdMX2V4cHowMF81KTsgCmlmKApQQUlSUChC Z0xfY2FyemQyODg4emQyXzUxOCkpCnsgCm9ial90IEJnTF9hcmdzejAwXzMyOTE7b2JqX3QgQmdM X2Z1bnowMF8zMjkwOwpCZ0xfZnVuejAwXzMyOTAgPSBCZ0xfY2FyemQyODg4emQyXzUxODsgCkJn TF9hcmdzejAwXzMyOTEgPSBCZ0xfY2RyemQyNTYwemQyXzQ5MDsgCkJnTF9hcmdzejAwXzQ1NyA9 IEJnTF9hcmdzejAwXzMyOTE7IApCZ0xfZnVuejAwXzQ1NiA9IEJnTF9mdW56MDBfMzI5MDsgCmdv dG8gQmdMX3RhZ3pkMjExNXpkMl80NTg7fSAgZWxzZSAKeyAKb2JqX3QgQmdMX2FyZ3N6MDBfMzI5 MztvYmpfdCBCZ0xfZnVuejAwXzMyOTI7CkJnTF9mdW56MDBfMzI5MiA9IEJnTF9jYXJ6ZDI4ODh6 ZDJfNTE4OyAKQmdMX2FyZ3N6MDBfMzI5MyA9IEJnTF9jZHJ6ZDI1NjB6ZDJfNDkwOyAKQmdMX2Fy Z3N6MDBfNDU0ID0gQmdMX2FyZ3N6MDBfMzI5MzsgCkJnTF9mdW56MDBfNDUzID0gQmdMX2Z1bnow MF8zMjkyOyAKZ290byBCZ0xfdGFnemQyMTE0emQyXzQ1NTt9IH0gfSAgZWxzZSAKeyAvKiBFdmFs L2V2Y29tcGlsZS5zY20gOTYgKi8KYm9vbF90IEJnTF90ZXN0ejAwXzMyOTQ7CnsgLyogRXZhbC9l dmNvbXBpbGUuc2NtIDk2ICovCm9ial90IEJnTF9hdXh6MDBfMzI5NTsKQmdMX2F1eHowMF8zMjk1 ID0gCkNBUihCZ0xfZXhwejAwXzUpOyAKQmdMX3Rlc3R6MDBfMzI5NCA9IAooQmdMX2F1eHowMF8z Mjk1PT1CR2xfc3ltYm9sMTkzOXowMHp6X19ldmNvbXBpbGV6MDApOyB9IAppZihCZ0xfdGVzdHow MF8zMjk0KQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpvYmpfdCBCZ0xfYXJnMTM5NXow MF8xNTA4Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpib29sX3QgQmdMX3Rlc3QxMTAy ejAwXzE1MTE7CkJnTF90ZXN0MTEwMnowMF8xNTExID0gCkVYVEVOREVEX1BBSVJQKEJnTF9leHB6 MDBfNSk7IAppZihCZ0xfdGVzdDExMDJ6MDBfMTUxMSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20g OTYgKi8KQmdMX2FyZzEzOTV6MDBfMTUwOCA9IApDRVIoQmdMX2V4cHowMF81KTsgfSAgZWxzZSAK eyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8KQmdMX2FyZzEzOTV6MDBfMTUwOCA9IEJnTF9s b2N6MDBfMTA7IH0gfSAKcmV0dXJuIApCR2xfZXZjb21waWxlemQyYmVnaW56ZDJ6el9fZXZjb21w aWxlejAwKEJnTF9jZHJ6ZDI1NjB6ZDJfNDkwLCBCZ0xfZW52ejAwXzYsIEJnTF9nZW52ejAwXzcs IEJnTF93aGVyZXowMF84LCBCZ0xfbmFtZWR6ZjN6ZjNfOSwgQmdMX2FyZzEzOTV6MDBfMTUwOCk7 fSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8KYm9vbF90IEJnTF90ZXN0ejAw XzMzMDI7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCm9ial90IEJnTF9hdXh6MDBfMzMw MzsKQmdMX2F1eHowMF8zMzAzID0gCkNBUihCZ0xfZXhwejAwXzUpOyAKQmdMX3Rlc3R6MDBfMzMw MiA9IAooQmdMX2F1eHowMF8zMzAzPT1CR2xfc3ltYm9sMTk0MHowMHp6X19ldmNvbXBpbGV6MDAp OyB9IAppZihCZ0xfdGVzdHowMF8zMzAyKQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpp ZigKUEFJUlAoQmdMX2NkcnpkMjU2MHpkMl80OTApKQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5 NiAqLwpvYmpfdCBCZ0xfY2RyemQyOTM1emQyXzUyODsKQmdMX2NkcnpkMjkzNXpkMl81MjggPSAK Q0RSKEJnTF9jZHJ6ZDI1NjB6ZDJfNDkwKTsgCmlmKApQQUlSUChCZ0xfY2RyemQyOTM1emQyXzUy OCkpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCm9ial90IEJnTF9jYXJ6ZDI5Mzh6ZDJf NTMwOwpCZ0xfY2FyemQyOTM4emQyXzUzMCA9IApDQVIoQmdMX2NkcnpkMjkzNXpkMl81MjgpOyAK aWYoClBBSVJQKEJnTF9jYXJ6ZDI5Mzh6ZDJfNTMwKSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20g OTYgKi8KYm9vbF90IEJnTF90ZXN0ejAwXzMzMTQ7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2 ICovCm9ial90IEJnTF9hdXh6MDBfMzMxNTsKQmdMX2F1eHowMF8zMzE1ID0gCkNBUihCZ0xfY2Fy emQyOTM4emQyXzUzMCk7IApCZ0xfdGVzdHowMF8zMzE0ID0gCihCZ0xfYXV4ejAwXzMzMTU9PUJH bF9zeW1ib2wxOTMyejAwenpfX2V2Y29tcGlsZXowMCk7IH0gCmlmKEJnTF90ZXN0ejAwXzMzMTQp CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCmlmKApCR2xfZXF1YWx6ZjN6ZjN6el9fcjRf ZXF1aXZhbGVuY2VfNl8yejAwKApDRFIoQmdMX2NkcnpkMjkzNXpkMl81MjgpLCBCTklMKSkKeyAv KiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8KQmdMX3ZhcnowMF80MzcgPSAKQ0FSKEJnTF9jZHJ6 ZDI1NjB6ZDJfNDkwKTsgCkJnTF92YWx6MDBfNDM4ID0gQmdMX2NhcnpkMjkzOHpkMl81MzA7IApC Z0xfdGFnemQyMTA4emQyXzQzOToKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTMxICovCmJvb2xf dCBCZ0xfdGVzdDEzOTZ6MDBfNzUwOwppZigKKEJnTF93aGVyZXowMF84PT1CR2xfc3ltYm9sMTky OHowMHp6X19ldmNvbXBpbGV6MDApKQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxMzIgKi8KYm9v bF90IEJnTF9fb3J0ZXN0XzEwMDl6MDBfNzYwOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxMzIg Ki8Kb2JqX3QgQmdMX2F1eHowMF8zMzIzOwpCZ0xfYXV4ejAwXzMzMjMgPSAKQkdsX3NjaGVtZXpk MnJlcG9ydHpkMmVudmlyb25tZW50ejAwenpfX2V2YWx6MDAoCkJJTlQoKChsb25nKTUpKSk7IApC Z0xfX29ydGVzdF8xMDA5ejAwXzc2MCA9IAooQmdMX2dlbnZ6MDBfNz09QmdMX2F1eHowMF8zMzIz KTsgfSAKaWYoQmdMX19vcnRlc3RfMTAwOXowMF83NjApCnsgLyogRXZhbC9ldmNvbXBpbGUuc2Nt IDEzMiAqLwpCZ0xfdGVzdDEzOTZ6MDBfNzUwID0gQmdMX19vcnRlc3RfMTAwOXowMF83NjA7IH0g IGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDEzMyAqLwpvYmpfdCBCZ0xfYXV4ejAwXzMz Mjg7CkJnTF9hdXh6MDBfMzMyOCA9IApCR2xfbnVsbHpkMmVudmlyb25tZW50emQyenpfX2V2YWx6 MDAoCkJJTlQoKChsb25nKTUpKSk7IApCZ0xfdGVzdDEzOTZ6MDBfNzUwID0gCihCZ0xfZ2Vudnow MF83PT1CZ0xfYXV4ejAwXzMzMjgpOyB9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2Nt IDEzMSAqLwpCZ0xfdGVzdDEzOTZ6MDBfNzUwID0gKChib29sX3QpMCk7IH0gCmlmKEJnTF90ZXN0 MTM5NnowMF83NTApCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDEzMSAqLwpyZXR1cm4gCkJHbF9l dmNvbXBpbGV6ZDJlcnJvcnpkMnp6X19ldmNvbXBpbGV6MDAoQmdMX2xvY3owMF8xMCwgQkdsX3N0 cmluZzE5MjZ6MDB6el9fZXZjb21waWxlejAwLCBCR2xfc3RyaW5nMTkyOXowMHp6X19ldmNvbXBp bGV6MDAsIEJnTF9leHB6MDBfNSk7fSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTM4 ICovCm9ial90IEJnTF9sb2N6MDBfNzUxOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxMzggKi8K Ym9vbF90IEJnTF90ZXN0MTEwMnowMF8xNzcxOwpCZ0xfdGVzdDExMDJ6MDBfMTc3MSA9IApFWFRF TkRFRF9QQUlSUChCZ0xfZXhwejAwXzUpOyAKaWYoQmdMX3Rlc3QxMTAyejAwXzE3NzEpCnsgLyog RXZhbC9ldmNvbXBpbGUuc2NtIDEzOCAqLwpCZ0xfbG9jejAwXzc1MSA9IApDRVIoQmdMX2V4cHow MF81KTsgfSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTM4ICovCkJnTF9sb2N6MDBf NzUxID0gQmdMX2xvY3owMF8xMDsgfSB9IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxMzkgKi8K b2JqX3QgQmdMX2FyZzEzOTd6MDBfNzUyO29ial90IEJnTF9hcmcxMzk4ejAwXzc1MzsKQmdMX2Fy ZzEzOTd6MDBfNzUyID0gCkJHbF91bnR5cGV6ZDJpZGVudHpkMnp6X19ldmNvbXBpbGV6MDAoQmdM X3ZhcnowMF80MzcpOyAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTQwICovCm9ial90IEJnTF96 YzNhbm9ueW1vdXN6YTMxNDAwemUzejgzXzI5NzU7CnsgCmludCBCZ0xfYXV4ejAwXzMzNDA7aW50 IEJnTF9hdXh6MDBfMzMzODsKQmdMX2F1eHowMF8zMzQwID0gCihpbnQpKCgobG9uZyk1KSk7IApC Z0xfYXV4ejAwXzMzMzggPSAKKGludCkoKChsb25nKTApKTsgCkJnTF96YzNhbm9ueW1vdXN6YTMx NDAwemUzejgzXzI5NzUgPSAKbWFrZV9meF9wcm9jZWR1cmUoQkdsX3pjM2Fub255bW91c3phMzE0 MDB6ZTN6ODN6el9fZXZjb21waWxlejAwLCBCZ0xfYXV4ejAwXzMzMzgsIEJnTF9hdXh6MDBfMzM0 MCk7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDE0MCAqLwppbnQgQmdMX2F1eHowMF8zMzQz OwpCZ0xfYXV4ejAwXzMzNDMgPSAKKGludCkoKChsb25nKTApKTsgClBST0NFRFVSRV9TRVQoQmdM X3pjM2Fub255bW91c3phMzE0MDB6ZTN6ODNfMjk3NSwgQmdMX2F1eHowMF8zMzQzLCBCZ0xfZXhw ejAwXzUpOyB9IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxNDAgKi8KaW50IEJnTF9hdXh6MDBf MzM0NjsKQmdMX2F1eHowMF8zMzQ2ID0gCihpbnQpKCgobG9uZykxKSk7IApQUk9DRURVUkVfU0VU KEJnTF96YzNhbm9ueW1vdXN6YTMxNDAwemUzejgzXzI5NzUsIEJnTF9hdXh6MDBfMzM0NiwgQmdM X2xvY3owMF83NTEpOyB9IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxNDAgKi8KaW50IEJnTF9h dXh6MDBfMzM0OTsKQmdMX2F1eHowMF8zMzQ5ID0gCihpbnQpKCgobG9uZykyKSk7IApQUk9DRURV UkVfU0VUKEJnTF96YzNhbm9ueW1vdXN6YTMxNDAwemUzejgzXzI5NzUsIEJnTF9hdXh6MDBfMzM0 OSwgQmdMX3ZhbHowMF80MzgpOyB9IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxNDAgKi8KaW50 IEJnTF9hdXh6MDBfMzM1MjsKQmdMX2F1eHowMF8zMzUyID0gCihpbnQpKCgobG9uZykzKSk7IApQ Uk9DRURVUkVfU0VUKEJnTF96YzNhbm9ueW1vdXN6YTMxNDAwemUzejgzXzI5NzUsIEJnTF9hdXh6 MDBfMzM1MiwgQmdMX2dlbnZ6MDBfNyk7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDE0MCAq LwppbnQgQmdMX2F1eHowMF8zMzU1OwpCZ0xfYXV4ejAwXzMzNTUgPSAKKGludCkoKChsb25nKTQp KTsgClBST0NFRFVSRV9TRVQoQmdMX3pjM2Fub255bW91c3phMzE0MDB6ZTN6ODNfMjk3NSwgQmdM X2F1eHowMF8zMzU1LCBCZ0xfdmFyejAwXzQzNyk7IH0gCkJnTF9hcmcxMzk4ejAwXzc1MyA9IApC R2xfbWFrZXpkMnByb21pc2V6ZDJ6el9fcjRfY29udHJvbF9mZWF0dXJlc182Xzl6MDAoQmdMX3pj M2Fub255bW91c3phMzE0MDB6ZTN6ODNfMjk3NSk7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2Nt IDEzOSAqLwpvYmpfdCBCZ0xfdjEwMzh6MDBfMTc4MjsKeyAKaW50IEJnTF9hdXh6MDBfMzM1OTsK QmdMX2F1eHowMF8zMzU5ID0gCihpbnQpKCgobG9uZykzKSk7IApCZ0xfdjEwMzh6MDBfMTc4MiA9 IApjcmVhdGVfdmVjdG9yKEJnTF9hdXh6MDBfMzM1OSk7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUu c2NtIDEzOSAqLwpvYmpfdCBCZ0xfYXJnMTUyOXowMF8xNzg0OwpCZ0xfYXJnMTUyOXowMF8xNzg0 ID0gCk1BS0VfUEFJUihCZ0xfYXJnMTM5N3owMF83NTIsIEJnTF9hcmcxMzk4ejAwXzc1Myk7IAp7 IAppbnQgQmdMX2F1eHowMF8zMzYzOwpCZ0xfYXV4ejAwXzMzNjMgPSAKKGludCkoKChsb25nKTIp KTsgClZFQ1RPUl9TRVQoQmdMX3YxMDM4ejAwXzE3ODIsQmdMX2F1eHowMF8zMzYzLEJnTF9hcmcx NTI5ejAwXzE3ODQpOyB9IH0gCnsgCmludCBCZ0xfYXV4ejAwXzMzNjY7CkJnTF9hdXh6MDBfMzM2 NiA9IAooaW50KSgoKGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwMzh6MDBfMTc4MixCZ0xf YXV4ejAwXzMzNjYsQmdMX2xvY3owMF83NTEpOyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzMzNzE7 aW50IEJnTF9hdXh6MDBfMzM2OTsKQmdMX2F1eHowMF8zMzcxID0gCkJJTlQoKChsb25nKTE3KSk7 IApCZ0xfYXV4ejAwXzMzNjkgPSAKKGludCkoKChsb25nKTApKTsgClZFQ1RPUl9TRVQoQmdMX3Yx MDM4ejAwXzE3ODIsQmdMX2F1eHowMF8zMzY5LEJnTF9hdXh6MDBfMzM3MSk7IH0gCnJldHVybiBC Z0xfdjEwMzh6MDBfMTc4Mjt9IH0gfSB9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2Nt IDk2ICovCm9ial90IEJnTF9jYXJ6ZDI5OTB6ZDJfNTM1OwpCZ0xfY2FyemQyOTkwemQyXzUzNSA9 IApDQVIoQmdMX2V4cHowMF81KTsgCmlmKApQQUlSUChCZ0xfY2FyemQyOTkwemQyXzUzNSkpCnsg Cm9ial90IEJnTF9hcmdzejAwXzMzNzk7b2JqX3QgQmdMX2Z1bnowMF8zMzc4OwpCZ0xfZnVuejAw XzMzNzggPSBCZ0xfY2FyemQyOTkwemQyXzUzNTsgCkJnTF9hcmdzejAwXzMzNzkgPSAKQ0RSKEJn TF9leHB6MDBfNSk7IApCZ0xfYXJnc3owMF80NTcgPSBCZ0xfYXJnc3owMF8zMzc5OyAKQmdMX2Z1 bnowMF80NTYgPSBCZ0xfZnVuejAwXzMzNzg7IApnb3RvIEJnTF90YWd6ZDIxMTV6ZDJfNDU4O30g IGVsc2UgCnsgCm9ial90IEJnTF9hcmdzejAwXzMzODI7b2JqX3QgQmdMX2Z1bnowMF8zMzgxOwpC Z0xfZnVuejAwXzMzODEgPSBCZ0xfY2FyemQyOTkwemQyXzUzNTsgCkJnTF9hcmdzejAwXzMzODIg PSAKQ0RSKEJnTF9leHB6MDBfNSk7IApCZ0xfYXJnc3owMF80NTQgPSBCZ0xfYXJnc3owMF8zMzgy OyAKQmdMX2Z1bnowMF80NTMgPSBCZ0xfZnVuejAwXzMzODE7IApnb3RvIEJnTF90YWd6ZDIxMTR6 ZDJfNDU1O30gfSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpvYmpfdCBC Z0xfY2RyemQyMTAxMHpkMl81NDI7CkJnTF9jZHJ6ZDIxMDEwemQyXzU0MiA9IApDRFIoQmdMX2V4 cHowMF81KTsgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCm9ial90IEJnTF9jZHJ6ZDIx MDE1emQyXzU0MzsKQmdMX2NkcnpkMjEwMTV6ZDJfNTQzID0gCkNEUihCZ0xfY2RyemQyMTAxMHpk Ml81NDIpOyAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8Kb2JqX3QgQmdMX2NhcnpkMjEw MTl6ZDJfNTQ0OwpCZ0xfY2FyemQyMTAxOXpkMl81NDQgPSAKQ0FSKEJnTF9jZHJ6ZDIxMDE1emQy XzU0Myk7IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpvYmpfdCBCZ0xfY2RyemQyMTAy M3pkMl81NDU7CkJnTF9jZHJ6ZDIxMDIzemQyXzU0NSA9IApDRFIoQmdMX2NhcnpkMjEwMTl6ZDJf NTQ0KTsgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCmJvb2xfdCBCZ0xfdGVzdHowMF8z Mzg4Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpvYmpfdCBCZ0xfYXV4ejAwXzMzODk7 CkJnTF9hdXh6MDBfMzM4OSA9IApDQVIoQmdMX2NhcnpkMjEwMTl6ZDJfNTQ0KTsgCkJnTF90ZXN0 ejAwXzMzODggPSAKKEJnTF9hdXh6MDBfMzM4OT09QkdsX3N5bWJvbDE5Mzl6MDB6el9fZXZjb21w aWxlejAwKTsgfSAKaWYoQmdMX3Rlc3R6MDBfMzM4OCkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20g OTYgKi8KaWYoClBBSVJQKEJnTF9jZHJ6ZDIxMDIzemQyXzU0NSkpCnsgLyogRXZhbC9ldmNvbXBp bGUuc2NtIDk2ICovCm9ial90IEJnTF9jYXJ6ZDIxMDI1emQyXzU0ODsKQmdMX2NhcnpkMjEwMjV6 ZDJfNTQ4ID0gCkNBUihCZ0xfY2RyemQyMTAyM3pkMl81NDUpOyAKaWYoClBBSVJQKEJnTF9jYXJ6 ZDIxMDI1emQyXzU0OCkpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCmJvb2xfdCBCZ0xf dGVzdHowMF8zMzk3Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpvYmpfdCBCZ0xfYXV4 ejAwXzMzOTg7CkJnTF9hdXh6MDBfMzM5OCA9IApDQVIoQmdMX2NhcnpkMjEwMjV6ZDJfNTQ4KTsg CkJnTF90ZXN0ejAwXzMzOTcgPSAKKEJnTF9hdXh6MDBfMzM5OD09QkdsX3N5bWJvbDE5MzJ6MDB6 el9fZXZjb21waWxlejAwKTsgfSAKaWYoQmdMX3Rlc3R6MDBfMzM5NykKeyAvKiBFdmFsL2V2Y29t cGlsZS5zY20gOTYgKi8KaWYoCkJHbF9lcXVhbHpmM3pmM3p6X19yNF9lcXVpdmFsZW5jZV82XzJ6 MDAoCkNEUihCZ0xfY2RyemQyMTAyM3pkMl81NDUpLCBCTklMKSkKeyAvKiBFdmFsL2V2Y29tcGls ZS5zY20gOTYgKi8KaWYoCkJHbF9lcXVhbHpmM3pmM3p6X19yNF9lcXVpdmFsZW5jZV82XzJ6MDAo CkNEUihCZ0xfY2RyemQyMTAxNXpkMl81NDMpLCBCTklMKSkKeyAKb2JqX3QgQmdMX3ZhbHowMF8z NDA5O29ial90IEJnTF92YXJ6MDBfMzQwNzsKQmdMX3ZhcnowMF8zNDA3ID0gCkNBUihCZ0xfY2Ry emQyMTAxMHpkMl81NDIpOyAKQmdMX3ZhbHowMF8zNDA5ID0gQmdMX2NhcnpkMjEwMjV6ZDJfNTQ4 OyAKQmdMX3ZhbHowMF80MzggPSBCZ0xfdmFsejAwXzM0MDk7IApCZ0xfdmFyejAwXzQzNyA9IEJn TF92YXJ6MDBfMzQwNzsgCmdvdG8gQmdMX3RhZ3pkMjEwOHpkMl80Mzk7fSAgZWxzZSAKeyAvKiBF dmFsL2V2Y29tcGlsZS5zY20gOTYgKi8Kb2JqX3QgQmdMX2NhcnpkMjEwNzR6ZDJfNTU0OwpCZ0xf Y2FyemQyMTA3NHpkMl81NTQgPSAKQ0FSKEJnTF9leHB6MDBfNSk7IAppZigKUEFJUlAoQmdMX2Nh cnpkMjEwNzR6ZDJfNTU0KSkKeyAKb2JqX3QgQmdMX2FyZ3N6MDBfMzQxNDtvYmpfdCBCZ0xfZnVu ejAwXzM0MTM7CkJnTF9mdW56MDBfMzQxMyA9IEJnTF9jYXJ6ZDIxMDc0emQyXzU1NDsgCkJnTF9h cmdzejAwXzM0MTQgPSBCZ0xfY2RyemQyMTAxMHpkMl81NDI7IApCZ0xfYXJnc3owMF80NTcgPSBC Z0xfYXJnc3owMF8zNDE0OyAKQmdMX2Z1bnowMF80NTYgPSBCZ0xfZnVuejAwXzM0MTM7IApnb3Rv IEJnTF90YWd6ZDIxMTV6ZDJfNDU4O30gIGVsc2UgCnsgCm9ial90IEJnTF9hcmdzejAwXzM0MTY7 b2JqX3QgQmdMX2Z1bnowMF8zNDE1OwpCZ0xfZnVuejAwXzM0MTUgPSBCZ0xfY2FyemQyMTA3NHpk Ml81NTQ7IApCZ0xfYXJnc3owMF8zNDE2ID0gQmdMX2NkcnpkMjEwMTB6ZDJfNTQyOyAKQmdMX2Fy Z3N6MDBfNDU0ID0gQmdMX2FyZ3N6MDBfMzQxNjsgCkJnTF9mdW56MDBfNDUzID0gQmdMX2Z1bnow MF8zNDE1OyAKZ290byBCZ0xfdGFnemQyMTE0emQyXzQ1NTt9IH0gfSAgZWxzZSAKeyAvKiBFdmFs L2V2Y29tcGlsZS5zY20gOTYgKi8Kb2JqX3QgQmdMX2NkcnpkMjExMDd6ZDJfNTYyOwpCZ0xfY2Ry emQyMTEwN3pkMl81NjIgPSAKQ0RSKEJnTF9jZHJ6ZDIxMDEwemQyXzU0Mik7IAppZigKQkdsX2Vx dWFsemYzemYzenpfX3I0X2VxdWl2YWxlbmNlXzZfMnowMCgKQ0RSKEJnTF9jZHJ6ZDIxMTA3emQy XzU2MiksIEJOSUwpKQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpCZ0xfdmFyejAwXzQ0 MCA9IApDQVIoQmdMX2NkcnpkMjEwMTB6ZDJfNTQyKTsgCkJnTF92YWx6MDBfNDQxID0gCkNBUihC Z0xfY2RyemQyMTEwN3pkMl81NjIpOyAKQmdMX3RhZ3pkMjEwOXpkMl80NDI6CnsgLyogRXZhbC9l dmNvbXBpbGUuc2NtIDE0NCAqLwpib29sX3QgQmdMX3Rlc3QxNDA3ejAwXzc2MzsKaWYoCihCZ0xf d2hlcmV6MDBfOD09QkdsX3N5bWJvbDE5Mjh6MDB6el9fZXZjb21waWxlejAwKSkKeyAvKiBFdmFs L2V2Y29tcGlsZS5zY20gMTQ1ICovCmJvb2xfdCBCZ0xfX29ydGVzdF8xMDEwejAwXzc3MDsKeyAv KiBFdmFsL2V2Y29tcGlsZS5zY20gMTQ1ICovCm9ial90IEJnTF9hdXh6MDBfMzQyMzsKQmdMX2F1 eHowMF8zNDIzID0gCkJHbF9zY2hlbWV6ZDJyZXBvcnR6ZDJlbnZpcm9ubWVudHowMHp6X19ldmFs ejAwKApCSU5UKCgobG9uZyk1KSkpOyAKQmdMX19vcnRlc3RfMTAxMHowMF83NzAgPSAKKEJnTF9n ZW52ejAwXzc9PUJnTF9hdXh6MDBfMzQyMyk7IH0gCmlmKEJnTF9fb3J0ZXN0XzEwMTB6MDBfNzcw KQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxNDUgKi8KQmdMX3Rlc3QxNDA3ejAwXzc2MyA9IEJn TF9fb3J0ZXN0XzEwMTB6MDBfNzcwOyB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAx NDYgKi8Kb2JqX3QgQmdMX2F1eHowMF8zNDI4OwpCZ0xfYXV4ejAwXzM0MjggPSAKQkdsX251bGx6 ZDJlbnZpcm9ubWVudHpkMnp6X19ldmFsejAwKApCSU5UKCgobG9uZyk1KSkpOyAKQmdMX3Rlc3Qx NDA3ejAwXzc2MyA9IAooQmdMX2dlbnZ6MDBfNz09QmdMX2F1eHowMF8zNDI4KTsgfSB9ICBlbHNl IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxNDQgKi8KQmdMX3Rlc3QxNDA3ejAwXzc2MyA9ICgo Ym9vbF90KTApOyB9IAppZihCZ0xfdGVzdDE0MDd6MDBfNzYzKQp7IC8qIEV2YWwvZXZjb21waWxl LnNjbSAxNDQgKi8KcmV0dXJuIApCR2xfZXZjb21waWxlemQyZXJyb3J6ZDJ6el9fZXZjb21waWxl ejAwKEJnTF9sb2N6MDBfMTAsIEJHbF9zdHJpbmcxOTI2ejAwenpfX2V2Y29tcGlsZXowMCwgQkds X3N0cmluZzE5Mjl6MDB6el9fZXZjb21waWxlejAwLCBCZ0xfZXhwejAwXzUpO30gIGVsc2UgCnsg LyogRXZhbC9ldmNvbXBpbGUuc2NtIDE1MSAqLwpvYmpfdCBCZ0xfbG9jejAwXzc2NDsKeyAvKiBF dmFsL2V2Y29tcGlsZS5zY20gMTUxICovCmJvb2xfdCBCZ0xfdGVzdDExMDJ6MDBfMTc5NjsKQmdM X3Rlc3QxMTAyejAwXzE3OTYgPSAKRVhURU5ERURfUEFJUlAoQmdMX2V4cHowMF81KTsgCmlmKEJn TF90ZXN0MTEwMnowMF8xNzk2KQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxNTEgKi8KQmdMX2xv Y3owMF83NjQgPSAKQ0VSKEJnTF9leHB6MDBfNSk7IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBp bGUuc2NtIDE1MSAqLwpCZ0xfbG9jejAwXzc2NCA9IEJnTF9sb2N6MDBfMTA7IH0gfSAKeyAvKiBF dmFsL2V2Y29tcGlsZS5zY20gMTUyICovCm9ial90IEJnTF9hcmcxNDA4ejAwXzc2NTtvYmpfdCBC Z0xfYXJnMTQxMHowMF83NjY7CkJnTF9hcmcxNDA4ejAwXzc2NSA9IApCR2xfdW50eXBlemQyaWRl bnR6ZDJ6el9fZXZjb21waWxlejAwKEJnTF92YXJ6MDBfNDQwKTsgCnsgLyogRXZhbC9ldmNvbXBp bGUuc2NtIDE1MyAqLwpvYmpfdCBCZ0xfYXJnMTQxNnowMF83Njg7CnsgLyogRXZhbC9ldmNvbXBp bGUuc2NtIDE1NCAqLwpib29sX3QgQmdMX3Rlc3QxMTAyejAwXzE4MDE7CkJnTF90ZXN0MTEwMnow MF8xODAxID0gCkVYVEVOREVEX1BBSVJQKEJnTF92YWx6MDBfNDQxKTsgCmlmKEJnTF90ZXN0MTEw MnowMF8xODAxKQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxNTQgKi8KQmdMX2FyZzE0MTZ6MDBf NzY4ID0gCkNFUihCZ0xfdmFsejAwXzQ0MSk7IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUu c2NtIDE1NCAqLwpCZ0xfYXJnMTQxNnowMF83NjggPSBCZ0xfbG9jejAwXzc2NDsgfSB9IApCZ0xf YXJnMTQxMHowMF83NjYgPSAKQkdsX2V2Y29tcGlsZXowMHp6X19ldmNvbXBpbGV6MDAoQmdMX3Zh bHowMF80NDEsIEJOSUwsIEJnTF9nZW52ejAwXzcsIEJnTF93aGVyZXowMF84LCBCZ0xfbmFtZWR6 ZjN6ZjNfOSwgQmdMX2FyZzE0MTZ6MDBfNzY4KTsgfSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20g MTUyICovCm9ial90IEJnTF92MTAzOXowMF8xODA3Owp7IAppbnQgQmdMX2F1eHowMF8zNDQyOwpC Z0xfYXV4ejAwXzM0NDIgPSAKKGludCkoKChsb25nKTMpKTsgCkJnTF92MTAzOXowMF8xODA3ID0g CmNyZWF0ZV92ZWN0b3IoQmdMX2F1eHowMF8zNDQyKTsgfSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5z Y20gMTUyICovCm9ial90IEJnTF9hcmcxNTMxejAwXzE4MDk7CkJnTF9hcmcxNTMxejAwXzE4MDkg PSAKTUFLRV9QQUlSKEJnTF9hcmcxNDA4ejAwXzc2NSwgQmdMX2FyZzE0MTB6MDBfNzY2KTsgCnsg CmludCBCZ0xfYXV4ejAwXzM0NDY7CkJnTF9hdXh6MDBfMzQ0NiA9IAooaW50KSgoKGxvbmcpMikp OyAKVkVDVE9SX1NFVChCZ0xfdjEwMzl6MDBfMTgwNyxCZ0xfYXV4ejAwXzM0NDYsQmdMX2FyZzE1 MzF6MDBfMTgwOSk7IH0gfSAKeyAKaW50IEJnTF9hdXh6MDBfMzQ0OTsKQmdMX2F1eHowMF8zNDQ5 ID0gCihpbnQpKCgobG9uZykxKSk7IApWRUNUT1JfU0VUKEJnTF92MTAzOXowMF8xODA3LEJnTF9h dXh6MDBfMzQ0OSxCZ0xfbG9jejAwXzc2NCk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfMzQ1NDtp bnQgQmdMX2F1eHowMF8zNDUyOwpCZ0xfYXV4ejAwXzM0NTQgPSAKQklOVCgoKGxvbmcpNjMpKTsg CkJnTF9hdXh6MDBfMzQ1MiA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEw Mzl6MDBfMTgwNyxCZ0xfYXV4ejAwXzM0NTIsQmdMX2F1eHowMF8zNDU0KTsgfSAKcmV0dXJuIEJn TF92MTAzOXowMF8xODA3O30gfSB9IH0gfSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20g OTYgKi8Kb2JqX3QgQmdMX2NhcnpkMjExNDV6ZDJfNTY2OwpCZ0xfY2FyemQyMTE0NXpkMl81NjYg PSAKQ0FSKEJnTF9leHB6MDBfNSk7IAppZigKUEFJUlAoQmdMX2NhcnpkMjExNDV6ZDJfNTY2KSkK eyAKb2JqX3QgQmdMX2FyZ3N6MDBfMzQ2MztvYmpfdCBCZ0xfZnVuejAwXzM0NjI7CkJnTF9mdW56 MDBfMzQ2MiA9IEJnTF9jYXJ6ZDIxMTQ1emQyXzU2NjsgCkJnTF9hcmdzejAwXzM0NjMgPSAKQ0RS KEJnTF9leHB6MDBfNSk7IApCZ0xfYXJnc3owMF80NTcgPSBCZ0xfYXJnc3owMF8zNDYzOyAKQmdM X2Z1bnowMF80NTYgPSBCZ0xfZnVuejAwXzM0NjI7IApnb3RvIEJnTF90YWd6ZDIxMTV6ZDJfNDU4 O30gIGVsc2UgCnsgCm9ial90IEJnTF9hcmdzejAwXzM0NjY7b2JqX3QgQmdMX2Z1bnowMF8zNDY1 OwpCZ0xfZnVuejAwXzM0NjUgPSBCZ0xfY2FyemQyMTE0NXpkMl81NjY7IApCZ0xfYXJnc3owMF8z NDY2ID0gCkNEUihCZ0xfZXhwejAwXzUpOyAKQmdMX2FyZ3N6MDBfNDU0ID0gQmdMX2FyZ3N6MDBf MzQ2NjsgCkJnTF9mdW56MDBfNDUzID0gQmdMX2Z1bnowMF8zNDY1OyAKZ290byBCZ0xfdGFnemQy MTE0emQyXzQ1NTt9IH0gfSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpv YmpfdCBCZ0xfY2RyemQyMTE3OHpkMl81NzY7CkJnTF9jZHJ6ZDIxMTc4emQyXzU3NiA9IApDRFIo QmdMX2NkcnpkMjEwMTB6ZDJfNTQyKTsgCmlmKApCR2xfZXF1YWx6ZjN6ZjN6el9fcjRfZXF1aXZh bGVuY2VfNl8yejAwKApDRFIoQmdMX2NkcnpkMjExNzh6ZDJfNTc2KSwgQk5JTCkpCnsgCm9ial90 IEJnTF92YWx6MDBfMzQ3NDtvYmpfdCBCZ0xfdmFyejAwXzM0NzI7CkJnTF92YXJ6MDBfMzQ3MiA9 IApDQVIoQmdMX2NkcnpkMjEwMTB6ZDJfNTQyKTsgCkJnTF92YWx6MDBfMzQ3NCA9IApDQVIoQmdM X2NkcnpkMjExNzh6ZDJfNTc2KTsgCkJnTF92YWx6MDBfNDQxID0gQmdMX3ZhbHowMF8zNDc0OyAK QmdMX3ZhcnowMF80NDAgPSBCZ0xfdmFyejAwXzM0NzI7IApnb3RvIEJnTF90YWd6ZDIxMDl6ZDJf NDQyO30gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCm9ial90IEJnTF9jYXJ6 ZDIxMjE2emQyXzU4MDsKQmdMX2NhcnpkMjEyMTZ6ZDJfNTgwID0gCkNBUihCZ0xfZXhwejAwXzUp OyAKaWYoClBBSVJQKEJnTF9jYXJ6ZDIxMjE2emQyXzU4MCkpCnsgCm9ial90IEJnTF9hcmdzejAw XzM0ODA7b2JqX3QgQmdMX2Z1bnowMF8zNDc5OwpCZ0xfZnVuejAwXzM0NzkgPSBCZ0xfY2FyemQy MTIxNnpkMl81ODA7IApCZ0xfYXJnc3owMF8zNDgwID0gCkNEUihCZ0xfZXhwejAwXzUpOyAKQmdM X2FyZ3N6MDBfNDU3ID0gQmdMX2FyZ3N6MDBfMzQ4MDsgCkJnTF9mdW56MDBfNDU2ID0gQmdMX2Z1 bnowMF8zNDc5OyAKZ290byBCZ0xfdGFnemQyMTE1emQyXzQ1ODt9ICBlbHNlIAp7IApvYmpfdCBC Z0xfYXJnc3owMF8zNDgzO29ial90IEJnTF9mdW56MDBfMzQ4MjsKQmdMX2Z1bnowMF8zNDgyID0g QmdMX2NhcnpkMjEyMTZ6ZDJfNTgwOyAKQmdMX2FyZ3N6MDBfMzQ4MyA9IApDRFIoQmdMX2V4cHow MF81KTsgCkJnTF9hcmdzejAwXzQ1NCA9IEJnTF9hcmdzejAwXzM0ODM7IApCZ0xfZnVuejAwXzQ1 MyA9IEJnTF9mdW56MDBfMzQ4MjsgCmdvdG8gQmdMX3RhZ3pkMjExNHpkMl80NTU7fSB9IH0gfSAg ZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8Kb2JqX3QgQmdMX2NkcnpkMjEyNDl6 ZDJfNTkwOwpCZ0xfY2RyemQyMTI0OXpkMl81OTAgPSAKQ0RSKEJnTF9jZHJ6ZDIxMDEwemQyXzU0 Mik7IAppZigKQkdsX2VxdWFsemYzemYzenpfX3I0X2VxdWl2YWxlbmNlXzZfMnowMCgKQ0RSKEJn TF9jZHJ6ZDIxMjQ5emQyXzU5MCksIEJOSUwpKQp7IApvYmpfdCBCZ0xfdmFsejAwXzM0OTE7b2Jq X3QgQmdMX3ZhcnowMF8zNDg5OwpCZ0xfdmFyejAwXzM0ODkgPSAKQ0FSKEJnTF9jZHJ6ZDIxMDEw emQyXzU0Mik7IApCZ0xfdmFsejAwXzM0OTEgPSAKQ0FSKEJnTF9jZHJ6ZDIxMjQ5emQyXzU5MCk7 IApCZ0xfdmFsejAwXzQ0MSA9IEJnTF92YWx6MDBfMzQ5MTsgCkJnTF92YXJ6MDBfNDQwID0gQmdM X3ZhcnowMF8zNDg5OyAKZ290byBCZ0xfdGFnemQyMTA5emQyXzQ0Mjt9ICBlbHNlIAp7IC8qIEV2 YWwvZXZjb21waWxlLnNjbSA5NiAqLwpvYmpfdCBCZ0xfY2FyemQyMTI4N3pkMl81OTQ7CkJnTF9j YXJ6ZDIxMjg3emQyXzU5NCA9IApDQVIoQmdMX2V4cHowMF81KTsgCmlmKApQQUlSUChCZ0xfY2Fy emQyMTI4N3pkMl81OTQpKQp7IApvYmpfdCBCZ0xfYXJnc3owMF8zNDk3O29ial90IEJnTF9mdW56 MDBfMzQ5NjsKQmdMX2Z1bnowMF8zNDk2ID0gQmdMX2NhcnpkMjEyODd6ZDJfNTk0OyAKQmdMX2Fy Z3N6MDBfMzQ5NyA9IApDRFIoQmdMX2V4cHowMF81KTsgCkJnTF9hcmdzejAwXzQ1NyA9IEJnTF9h cmdzejAwXzM0OTc7IApCZ0xfZnVuejAwXzQ1NiA9IEJnTF9mdW56MDBfMzQ5NjsgCmdvdG8gQmdM X3RhZ3pkMjExNXpkMl80NTg7fSAgZWxzZSAKeyAKb2JqX3QgQmdMX2FyZ3N6MDBfMzUwMDtvYmpf dCBCZ0xfZnVuejAwXzM0OTk7CkJnTF9mdW56MDBfMzQ5OSA9IEJnTF9jYXJ6ZDIxMjg3emQyXzU5 NDsgCkJnTF9hcmdzejAwXzM1MDAgPSAKQ0RSKEJnTF9leHB6MDBfNSk7IApCZ0xfYXJnc3owMF80 NTQgPSBCZ0xfYXJnc3owMF8zNTAwOyAKQmdMX2Z1bnowMF80NTMgPSBCZ0xfZnVuejAwXzM0OTk7 IApnb3RvIEJnTF90YWd6ZDIxMTR6ZDJfNDU1O30gfSB9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNv bXBpbGUuc2NtIDk2ICovCm9ial90IEJnTF9jZHJ6ZDIxMzIwemQyXzYwMjsKQmdMX2NkcnpkMjEz MjB6ZDJfNjAyID0gCkNEUihCZ0xfY2RyemQyMTAxMHpkMl81NDIpOyAKaWYoCkJHbF9lcXVhbHpm M3pmM3p6X19yNF9lcXVpdmFsZW5jZV82XzJ6MDAoCkNEUihCZ0xfY2RyemQyMTMyMHpkMl82MDIp LCBCTklMKSkKeyAKb2JqX3QgQmdMX3ZhbHowMF8zNTA4O29ial90IEJnTF92YXJ6MDBfMzUwNjsK QmdMX3ZhcnowMF8zNTA2ID0gCkNBUihCZ0xfY2RyemQyMTAxMHpkMl81NDIpOyAKQmdMX3ZhbHow MF8zNTA4ID0gCkNBUihCZ0xfY2RyemQyMTMyMHpkMl82MDIpOyAKQmdMX3ZhbHowMF80NDEgPSBC Z0xfdmFsejAwXzM1MDg7IApCZ0xfdmFyejAwXzQ0MCA9IEJnTF92YXJ6MDBfMzUwNjsgCmdvdG8g QmdMX3RhZ3pkMjEwOXpkMl80NDI7fSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYg Ki8Kb2JqX3QgQmdMX2NhcnpkMjEzNTh6ZDJfNjA2OwpCZ0xfY2FyemQyMTM1OHpkMl82MDYgPSAK Q0FSKEJnTF9leHB6MDBfNSk7IAppZigKUEFJUlAoQmdMX2NhcnpkMjEzNTh6ZDJfNjA2KSkKeyAK b2JqX3QgQmdMX2FyZ3N6MDBfMzUxNDtvYmpfdCBCZ0xfZnVuejAwXzM1MTM7CkJnTF9mdW56MDBf MzUxMyA9IEJnTF9jYXJ6ZDIxMzU4emQyXzYwNjsgCkJnTF9hcmdzejAwXzM1MTQgPSAKQ0RSKEJn TF9leHB6MDBfNSk7IApCZ0xfYXJnc3owMF80NTcgPSBCZ0xfYXJnc3owMF8zNTE0OyAKQmdMX2Z1 bnowMF80NTYgPSBCZ0xfZnVuejAwXzM1MTM7IApnb3RvIEJnTF90YWd6ZDIxMTV6ZDJfNDU4O30g IGVsc2UgCnsgCm9ial90IEJnTF9hcmdzejAwXzM1MTc7b2JqX3QgQmdMX2Z1bnowMF8zNTE2OwpC Z0xfZnVuejAwXzM1MTYgPSBCZ0xfY2FyemQyMTM1OHpkMl82MDY7IApCZ0xfYXJnc3owMF8zNTE3 ID0gCkNEUihCZ0xfZXhwejAwXzUpOyAKQmdMX2FyZ3N6MDBfNDU0ID0gQmdMX2FyZ3N6MDBfMzUx NzsgCkJnTF9mdW56MDBfNDUzID0gQmdMX2Z1bnowMF8zNTE2OyAKZ290byBCZ0xfdGFnemQyMTE0 emQyXzQ1NTt9IH0gfSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpvYmpf dCBCZ0xfY2RyemQyMTM5MXpkMl82MTQ7CkJnTF9jZHJ6ZDIxMzkxemQyXzYxNCA9IApDRFIoQmdM X2NkcnpkMjEwMTB6ZDJfNTQyKTsgCmlmKApCR2xfZXF1YWx6ZjN6ZjN6el9fcjRfZXF1aXZhbGVu Y2VfNl8yejAwKApDRFIoQmdMX2NkcnpkMjEzOTF6ZDJfNjE0KSwgQk5JTCkpCnsgCm9ial90IEJn TF92YWx6MDBfMzUyNTtvYmpfdCBCZ0xfdmFyejAwXzM1MjM7CkJnTF92YXJ6MDBfMzUyMyA9IApD QVIoQmdMX2NkcnpkMjEwMTB6ZDJfNTQyKTsgCkJnTF92YWx6MDBfMzUyNSA9IApDQVIoQmdMX2Nk cnpkMjEzOTF6ZDJfNjE0KTsgCkJnTF92YWx6MDBfNDQxID0gQmdMX3ZhbHowMF8zNTI1OyAKQmdM X3ZhcnowMF80NDAgPSBCZ0xfdmFyejAwXzM1MjM7IApnb3RvIEJnTF90YWd6ZDIxMDl6ZDJfNDQy O30gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCm9ial90IEJnTF9jYXJ6ZDIx NDI5emQyXzYxODsKQmdMX2NhcnpkMjE0Mjl6ZDJfNjE4ID0gCkNBUihCZ0xfZXhwejAwXzUpOyAK aWYoClBBSVJQKEJnTF9jYXJ6ZDIxNDI5emQyXzYxOCkpCnsgCm9ial90IEJnTF9hcmdzejAwXzM1 MzE7b2JqX3QgQmdMX2Z1bnowMF8zNTMwOwpCZ0xfZnVuejAwXzM1MzAgPSBCZ0xfY2FyemQyMTQy OXpkMl82MTg7IApCZ0xfYXJnc3owMF8zNTMxID0gCkNEUihCZ0xfZXhwejAwXzUpOyAKQmdMX2Fy Z3N6MDBfNDU3ID0gQmdMX2FyZ3N6MDBfMzUzMTsgCkJnTF9mdW56MDBfNDU2ID0gQmdMX2Z1bnow MF8zNTMwOyAKZ290byBCZ0xfdGFnemQyMTE1emQyXzQ1ODt9ICBlbHNlIAp7IApvYmpfdCBCZ0xf YXJnc3owMF8zNTM0O29ial90IEJnTF9mdW56MDBfMzUzMzsKQmdMX2Z1bnowMF8zNTMzID0gQmdM X2NhcnpkMjE0Mjl6ZDJfNjE4OyAKQmdMX2FyZ3N6MDBfMzUzNCA9IApDRFIoQmdMX2V4cHowMF81 KTsgCkJnTF9hcmdzejAwXzQ1NCA9IEJnTF9hcmdzejAwXzM1MzQ7IApCZ0xfZnVuejAwXzQ1MyA9 IEJnTF9mdW56MDBfMzUzMzsgCmdvdG8gQmdMX3RhZ3pkMjExNHpkMl80NTU7fSB9IH0gfSB9IH0g fSB9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCm9ial90IEJnTF9jZHJ6 ZDIxNDYwemQyXzYyOTsKQmdMX2NkcnpkMjE0NjB6ZDJfNjI5ID0gCkNEUihCZ0xfZXhwejAwXzUp OyAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8Kb2JqX3QgQmdMX2NkcnpkMjE0NjV6ZDJf NjMwOwpCZ0xfY2RyemQyMTQ2NXpkMl82MzAgPSAKQ0RSKEJnTF9jZHJ6ZDIxNDYwemQyXzYyOSk7 IAppZigKQkdsX2VxdWFsemYzemYzenpfX3I0X2VxdWl2YWxlbmNlXzZfMnowMCgKQ0RSKEJnTF9j ZHJ6ZDIxNDY1emQyXzYzMCksIEJOSUwpKQp7IApvYmpfdCBCZ0xfdmFsejAwXzM1NDM7b2JqX3Qg QmdMX3ZhcnowMF8zNTQxOwpCZ0xfdmFyejAwXzM1NDEgPSAKQ0FSKEJnTF9jZHJ6ZDIxNDYwemQy XzYyOSk7IApCZ0xfdmFsejAwXzM1NDMgPSAKQ0FSKEJnTF9jZHJ6ZDIxNDY1emQyXzYzMCk7IApC Z0xfdmFsejAwXzQ0MSA9IEJnTF92YWx6MDBfMzU0MzsgCkJnTF92YXJ6MDBfNDQwID0gQmdMX3Zh cnowMF8zNTQxOyAKZ290byBCZ0xfdGFnemQyMTA5emQyXzQ0Mjt9ICBlbHNlIAp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSA5NiAqLwpvYmpfdCBCZ0xfY2FyemQyMTUwM3pkMl82MzQ7CkJnTF9jYXJ6 ZDIxNTAzemQyXzYzNCA9IApDQVIoQmdMX2V4cHowMF81KTsgCmlmKApQQUlSUChCZ0xfY2FyemQy MTUwM3pkMl82MzQpKQp7IApvYmpfdCBCZ0xfYXJnc3owMF8zNTQ5O29ial90IEJnTF9mdW56MDBf MzU0ODsKQmdMX2Z1bnowMF8zNTQ4ID0gQmdMX2NhcnpkMjE1MDN6ZDJfNjM0OyAKQmdMX2FyZ3N6 MDBfMzU0OSA9IEJnTF9jZHJ6ZDIxNDYwemQyXzYyOTsgCkJnTF9hcmdzejAwXzQ1NyA9IEJnTF9h cmdzejAwXzM1NDk7IApCZ0xfZnVuejAwXzQ1NiA9IEJnTF9mdW56MDBfMzU0ODsgCmdvdG8gQmdM X3RhZ3pkMjExNXpkMl80NTg7fSAgZWxzZSAKeyAKb2JqX3QgQmdMX2FyZ3N6MDBfMzU1MTtvYmpf dCBCZ0xfZnVuejAwXzM1NTA7CkJnTF9mdW56MDBfMzU1MCA9IEJnTF9jYXJ6ZDIxNTAzemQyXzYz NDsgCkJnTF9hcmdzejAwXzM1NTEgPSBCZ0xfY2RyemQyMTQ2MHpkMl82Mjk7IApCZ0xfYXJnc3ow MF80NTQgPSBCZ0xfYXJnc3owMF8zNTUxOyAKQmdMX2Z1bnowMF80NTMgPSBCZ0xfZnVuejAwXzM1 NTA7IApnb3RvIEJnTF90YWd6ZDIxMTR6ZDJfNDU1O30gfSB9IH0gfSAgZWxzZSAKeyAvKiBFdmFs L2V2Y29tcGlsZS5zY20gOTYgKi8Kb2JqX3QgQmdMX2NhcnpkMjE1NjR6ZDJfNjQxOwpCZ0xfY2Fy emQyMTU2NHpkMl82NDEgPSAKQ0FSKEJnTF9leHB6MDBfNSk7IAppZigKUEFJUlAoQmdMX2Nhcnpk MjE1NjR6ZDJfNjQxKSkKeyAKb2JqX3QgQmdMX2FyZ3N6MDBfMzU1NjtvYmpfdCBCZ0xfZnVuejAw XzM1NTU7CkJnTF9mdW56MDBfMzU1NSA9IEJnTF9jYXJ6ZDIxNTY0emQyXzY0MTsgCkJnTF9hcmdz ejAwXzM1NTYgPSAKQ0RSKEJnTF9leHB6MDBfNSk7IApCZ0xfYXJnc3owMF80NTcgPSBCZ0xfYXJn c3owMF8zNTU2OyAKQmdMX2Z1bnowMF80NTYgPSBCZ0xfZnVuejAwXzM1NTU7IApnb3RvIEJnTF90 YWd6ZDIxMTV6ZDJfNDU4O30gIGVsc2UgCnsgCm9ial90IEJnTF9hcmdzejAwXzM1NTk7b2JqX3Qg QmdMX2Z1bnowMF8zNTU4OwpCZ0xfZnVuejAwXzM1NTggPSBCZ0xfY2FyemQyMTU2NHpkMl82NDE7 IApCZ0xfYXJnc3owMF8zNTU5ID0gCkNEUihCZ0xfZXhwejAwXzUpOyAKQmdMX2FyZ3N6MDBfNDU0 ID0gQmdMX2FyZ3N6MDBfMzU1OTsgCkJnTF9mdW56MDBfNDUzID0gQmdMX2Z1bnowMF8zNTU4OyAK Z290byBCZ0xfdGFnemQyMTE0emQyXzQ1NTt9IH0gfSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGls ZS5zY20gOTYgKi8Kb2JqX3QgQmdMX2NhcnpkMjE2MjN6ZDJfNjQ2OwpCZ0xfY2FyemQyMTYyM3pk Ml82NDYgPSAKQ0FSKEJnTF9leHB6MDBfNSk7IAppZigKUEFJUlAoQmdMX2NhcnpkMjE2MjN6ZDJf NjQ2KSkKeyAKb2JqX3QgQmdMX2FyZ3N6MDBfMzU2NTtvYmpfdCBCZ0xfZnVuejAwXzM1NjQ7CkJn TF9mdW56MDBfMzU2NCA9IEJnTF9jYXJ6ZDIxNjIzemQyXzY0NjsgCkJnTF9hcmdzejAwXzM1NjUg PSAKQ0RSKEJnTF9leHB6MDBfNSk7IApCZ0xfYXJnc3owMF80NTcgPSBCZ0xfYXJnc3owMF8zNTY1 OyAKQmdMX2Z1bnowMF80NTYgPSBCZ0xfZnVuejAwXzM1NjQ7IApnb3RvIEJnTF90YWd6ZDIxMTV6 ZDJfNDU4O30gIGVsc2UgCnsgCm9ial90IEJnTF9hcmdzejAwXzM1Njg7b2JqX3QgQmdMX2Z1bnow MF8zNTY3OwpCZ0xfZnVuejAwXzM1NjcgPSBCZ0xfY2FyemQyMTYyM3pkMl82NDY7IApCZ0xfYXJn c3owMF8zNTY4ID0gCkNEUihCZ0xfZXhwejAwXzUpOyAKQmdMX2FyZ3N6MDBfNDU0ID0gQmdMX2Fy Z3N6MDBfMzU2ODsgCkJnTF9mdW56MDBfNDUzID0gQmdMX2Z1bnowMF8zNTY3OyAKZ290byBCZ0xf dGFnemQyMTE0emQyXzQ1NTt9IH0gfSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYg Ki8KYm9vbF90IEJnTF90ZXN0ejAwXzM1NzA7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICov Cm9ial90IEJnTF9hdXh6MDBfMzU3MTsKQmdMX2F1eHowMF8zNTcxID0gCkNBUihCZ0xfZXhwejAw XzUpOyAKQmdMX3Rlc3R6MDBfMzU3MCA9IAooQmdMX2F1eHowMF8zNTcxPT1CR2xfc3ltYm9sMTk0 MXowMHp6X19ldmNvbXBpbGV6MDApOyB9IAppZihCZ0xfdGVzdHowMF8zNTcwKQp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSA5NiAqLwppZigKUEFJUlAoQmdMX2V4cHowMF81KSkKeyAvKiBFdmFsL2V2 Y29tcGlsZS5zY20gOTYgKi8Kb2JqX3QgQmdMX2NkcnpkMjE5NTR6ZDJfNzc5OwpCZ0xfY2RyemQy MTk1NHpkMl83NzkgPSAKQ0RSKEJnTF9leHB6MDBfNSk7IAppZigKUEFJUlAoQmdMX2NkcnpkMjE5 NTR6ZDJfNzc5KSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8Kb2JqX3QgQmdMX2Nhcnpk MjE5NTd6ZDJfNzgxO29ial90IEJnTF9jZHJ6ZDIxOTU4emQyXzc4MjsKQmdMX2NhcnpkMjE5NTd6 ZDJfNzgxID0gCkNBUihCZ0xfY2RyemQyMTk1NHpkMl83NzkpOyAKQmdMX2NkcnpkMjE5NTh6ZDJf NzgyID0gCkNEUihCZ0xfY2RyemQyMTk1NHpkMl83NzkpOyAKaWYoClNZTUJPTFAoQmdMX2Nhcnpk MjE5NTd6ZDJfNzgxKSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8KaWYoClBBSVJQKEJn TF9jZHJ6ZDIxOTU4emQyXzc4MikpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCmlmKApC R2xfZXF1YWx6ZjN6ZjN6el9fcjRfZXF1aXZhbGVuY2VfNl8yejAwKApDRFIoQmdMX2NkcnpkMjE5 NTh6ZDJfNzgyKSwgQk5JTCkpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCm9ial90IEJn TF9hcmcxNDI1ejAwXzc4NjsKQmdMX2FyZzE0MjV6MDBfNzg2ID0gCkNBUihCZ0xfY2RyemQyMTk1 OHpkMl83ODIpOyAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8Kb2JqX3QgQmdMX2xvY3ow MF8xODMwOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpib29sX3QgQmdMX3Rlc3QxMTAy ejAwXzE4MzY7CkJnTF90ZXN0MTEwMnowMF8xODM2ID0gCkVYVEVOREVEX1BBSVJQKEJnTF9leHB6 MDBfNSk7IAppZihCZ0xfdGVzdDExMDJ6MDBfMTgzNikKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20g OTYgKi8KQmdMX2xvY3owMF8xODMwID0gCkNFUihCZ0xfZXhwejAwXzUpOyB9ICBlbHNlIAp7IC8q IEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpCZ0xfbG9jejAwXzE4MzAgPSBCZ0xfbG9jejAwXzEw OyB9IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCm9ial90IEJnTF9hcmcxNDI4ejAw XzE4MzE7b2JqX3QgQmdMX2FyZzE0Mjl6MDBfMTgzMjsKQmdMX2FyZzE0Mjh6MDBfMTgzMSA9IApC R2xfdmFyaWFibGV6MDB6el9fZXZjb21waWxlejAwKEJnTF9sb2N6MDBfMTgzMCwgQmdMX2Nhcnpk MjE5NTd6ZDJfNzgxLCBCZ0xfZW52ejAwXzYsIEJnTF9nZW52ejAwXzcpOyAKeyAvKiBFdmFsL2V2 Y29tcGlsZS5zY20gOTYgKi8Kb2JqX3QgQmdMX2FyZzE0MzB6MDBfMTgzMzsKeyAvKiBFdmFsL2V2 Y29tcGlsZS5zY20gOTYgKi8KYm9vbF90IEJnTF90ZXN0MTEwMnowMF8xODQxOwpCZ0xfdGVzdDEx MDJ6MDBfMTg0MSA9IApFWFRFTkRFRF9QQUlSUChCZ0xfYXJnMTQyNXowMF83ODYpOyAKaWYoQmdM X3Rlc3QxMTAyejAwXzE4NDEpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCkJnTF9hcmcx NDMwejAwXzE4MzMgPSAKQ0VSKEJnTF9hcmcxNDI1ejAwXzc4Nik7IH0gIGVsc2UgCnsgLyogRXZh bC9ldmNvbXBpbGUuc2NtIDk2ICovCkJnTF9hcmcxNDMwejAwXzE4MzMgPSBCZ0xfbG9jejAwXzE4 MzA7IH0gfSAKQmdMX2FyZzE0Mjl6MDBfMTgzMiA9IApCR2xfZXZjb21waWxlejAwenpfX2V2Y29t cGlsZXowMChCZ0xfYXJnMTQyNXowMF83ODYsIEJnTF9lbnZ6MDBfNiwgQmdMX2dlbnZ6MDBfNywg QmdMX2NhcnpkMjE5NTd6ZDJfNzgxLCBCVFJVRSwgQmdMX2FyZzE0MzB6MDBfMTgzMyk7IH0gCnJl dHVybiAKQkdsX2V2Y29tcGlsZXpkMnNldHpkMnp6X19ldmNvbXBpbGV6MDAoQmdMX2FyZzE0Mjh6 MDBfMTgzMSwgQmdMX2FyZzE0Mjl6MDBfMTgzMiwgQmdMX2xvY3owMF8xODMwKTt9IH0gfSAgZWxz ZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8KRkFJTFVSRShCR2xfc3RyaW5nMTkzMHow MHp6X19ldmNvbXBpbGV6MDAsQkdsX3N0cmluZzE5MzF6MDB6el9fZXZjb21waWxlejAwLEJnTF9l eHB6MDBfNSk7fSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpGQUlMVVJF KEJHbF9zdHJpbmcxOTMwejAwenpfX2V2Y29tcGlsZXowMCxCR2xfc3RyaW5nMTkzMXowMHp6X19l dmNvbXBpbGV6MDAsQmdMX2V4cHowMF81KTt9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUu c2NtIDk2ICovCkZBSUxVUkUoQkdsX3N0cmluZzE5MzB6MDB6el9fZXZjb21waWxlejAwLEJHbF9z dHJpbmcxOTMxejAwenpfX2V2Y29tcGlsZXowMCxCZ0xfZXhwejAwXzUpO30gfSAgZWxzZSAKeyAv KiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8KRkFJTFVSRShCR2xfc3RyaW5nMTkzMHowMHp6X19l dmNvbXBpbGV6MDAsQkdsX3N0cmluZzE5MzF6MDB6el9fZXZjb21waWxlejAwLEJnTF9leHB6MDBf NSk7fSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpGQUlMVVJFKEJHbF9z dHJpbmcxOTMwejAwenpfX2V2Y29tcGlsZXowMCxCR2xfc3RyaW5nMTkzMXowMHp6X19ldmNvbXBp bGV6MDAsQmdMX2V4cHowMF81KTt9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2 ICovCm9ial90IEJnTF9jZHJ6ZDIxNjY4emQyXzY1MjsKQmdMX2NkcnpkMjE2Njh6ZDJfNjUyID0g CkNEUihCZ0xfZXhwejAwXzUpOyAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8KYm9vbF90 IEJnTF90ZXN0ejAwXzM2MDQ7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCm9ial90IEJn TF9hdXh6MDBfMzYwNTsKQmdMX2F1eHowMF8zNjA1ID0gCkNBUihCZ0xfZXhwejAwXzUpOyAKQmdM X3Rlc3R6MDBfMzYwNCA9IAooQmdMX2F1eHowMF8zNjA1PT1CR2xfc3ltYm9sMTk0MnowMHp6X19l dmNvbXBpbGV6MDApOyB9IAppZihCZ0xfdGVzdHowMF8zNjA0KQp7IC8qIEV2YWwvZXZjb21waWxl LnNjbSA5NiAqLwppZigKUEFJUlAoQmdMX2NkcnpkMjE2Njh6ZDJfNjUyKSkKeyAvKiBFdmFsL2V2 Y29tcGlsZS5zY20gOTYgKi8Kb2JqX3QgQmdMX2NkcnpkMjE2NzJ6ZDJfNjU1OwpCZ0xfY2RyemQy MTY3MnpkMl82NTUgPSAKQ0RSKEJnTF9jZHJ6ZDIxNjY4emQyXzY1Mik7IAppZigKUEFJUlAoQmdM X2NkcnpkMjE2NzJ6ZDJfNjU1KSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8KaWYoCkJH bF9lcXVhbHpmM3pmM3p6X19yNF9lcXVpdmFsZW5jZV82XzJ6MDAoCkNEUihCZ0xfY2RyemQyMTY3 MnpkMl82NTUpLCBCTklMKSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8KQmdMX2VzY2Fw ZXowMF80NDQgPSAKQ0FSKEJnTF9jZHJ6ZDIxNjY4emQyXzY1Mik7IApCZ0xfYm9keXowMF80NDUg PSAKQ0FSKEJnTF9jZHJ6ZDIxNjcyemQyXzY1NSk7IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAx NjYgKi8Kb2JqX3QgQmdMX2xvY3owMF83OTM7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDE2NiAq Lwpib29sX3QgQmdMX3Rlc3QxMTAyejAwXzE4Nzg7CkJnTF90ZXN0MTEwMnowMF8xODc4ID0gCkVY VEVOREVEX1BBSVJQKEJnTF9leHB6MDBfNSk7IAppZihCZ0xfdGVzdDExMDJ6MDBfMTg3OCkKeyAv KiBFdmFsL2V2Y29tcGlsZS5zY20gMTY2ICovCkJnTF9sb2N6MDBfNzkzID0gCkNFUihCZ0xfZXhw ejAwXzUpOyB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxNjYgKi8KQmdMX2xvY3ow MF83OTMgPSBCZ0xfbG9jejAwXzEwOyB9IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDE2NyAq LwpvYmpfdCBCZ0xfYXJnMTQzMXowMF83OTQ7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDE2NyAq LwpvYmpfdCBCZ0xfYXJnMTQzMnowMF83OTU7b2JqX3QgQmdMX2FyZzE0MzR6MDBfNzk2Owp7IC8q IEV2YWwvZXZjb21waWxlLnNjbSAxNjcgKi8Kb2JqX3QgQmdMX2FyZzE0MzZ6MDBfNzk3O29ial90 IEJnTF9hcmcxNDM3ejAwXzc5ODsKQmdMX2FyZzE0MzZ6MDBfNzk3ID0gQkdsX3N5bWJvbDE5MzJ6 MDB6el9fZXZjb21waWxlejAwOyAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTY3ICovCm9ial90 IEJnTF9hcmcxNDM4ejAwXzc5OTsKQmdMX2FyZzE0Mzh6MDBfNzk5ID0gCk1BS0VfUEFJUihCZ0xf Ym9keXowMF80NDUsIEJOSUwpOyAKQmdMX2FyZzE0Mzd6MDBfNzk4ID0gCk1BS0VfUEFJUihCZ0xf ZXNjYXBlejAwXzQ0NCwgQmdMX2FyZzE0Mzh6MDBfNzk5KTsgfSAKQmdMX2FyZzE0MzJ6MDBfNzk1 ID0gCk1BS0VfUEFJUihCZ0xfYXJnMTQzNnowMF83OTcsIEJnTF9hcmcxNDM3ejAwXzc5OCk7IH0g CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDE3MiAqLwpib29sX3QgQmdMX3Rlc3QxMTAyejAwXzE4 ODM7CkJnTF90ZXN0MTEwMnowMF8xODgzID0gCkVYVEVOREVEX1BBSVJQKEJnTF9ib2R5ejAwXzQ0 NSk7IAppZihCZ0xfdGVzdDExMDJ6MDBfMTg4MykKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTcy ICovCkJnTF9hcmcxNDM0ejAwXzc5NiA9IApDRVIoQmdMX2JvZHl6MDBfNDQ1KTsgfSAgZWxzZSAK eyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTcyICovCkJnTF9hcmcxNDM0ejAwXzc5NiA9IEJnTF9s b2N6MDBfNzkzOyB9IH0gCkJnTF9hcmcxNDMxejAwXzc5NCA9IApCR2xfZXZjb21waWxlejAwenpf X2V2Y29tcGlsZXowMChCZ0xfYXJnMTQzMnowMF83OTUsIEJnTF9lbnZ6MDBfNiwgQmdMX2dlbnZ6 MDBfNywgQmdMX2VzY2FwZXowMF80NDQsIEJUUlVFLCBCZ0xfYXJnMTQzNHowMF83OTYpOyB9IAp7 IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxNjcgKi8Kb2JqX3QgQmdMX3YxMDQwejAwXzE4ODg7Cnsg CmludCBCZ0xfYXV4ejAwXzM2MjY7CkJnTF9hdXh6MDBfMzYyNiA9IAooaW50KSgoKGxvbmcpMykp OyAKQmdMX3YxMDQwejAwXzE4ODggPSAKY3JlYXRlX3ZlY3RvcihCZ0xfYXV4ejAwXzM2MjYpOyB9 IAp7IAppbnQgQmdMX2F1eHowMF8zNjI5OwpCZ0xfYXV4ejAwXzM2MjkgPSAKKGludCkoKChsb25n KTIpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDQwejAwXzE4ODgsQmdMX2F1eHowMF8zNjI5LEJnTF9h cmcxNDMxejAwXzc5NCk7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzM2MzI7CkJnTF9hdXh6MDBfMzYz MiA9IAooaW50KSgoKGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNDB6MDBfMTg4OCxCZ0xf YXV4ejAwXzM2MzIsQmdMX2xvY3owMF83OTMpOyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzM2Mzc7 aW50IEJnTF9hdXh6MDBfMzYzNTsKQmdMX2F1eHowMF8zNjM3ID0gCkJJTlQoKChsb25nKTE4KSk7 IApCZ0xfYXV4ejAwXzM2MzUgPSAKKGludCkoKChsb25nKTApKTsgClZFQ1RPUl9TRVQoQmdMX3Yx MDQwejAwXzE4ODgsQmdMX2F1eHowMF8zNjM1LEJnTF9hdXh6MDBfMzYzNyk7IH0gCnJldHVybiBC Z0xfdjEwNDB6MDBfMTg4ODt9IH0gfSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5 NiAqLwpvYmpfdCBCZ0xfY2FyemQyMTY5NXpkMl82NjA7CkJnTF9jYXJ6ZDIxNjk1emQyXzY2MCA9 IApDQVIoQmdMX2V4cHowMF81KTsgCmlmKApQQUlSUChCZ0xfY2FyemQyMTY5NXpkMl82NjApKQp7 IApvYmpfdCBCZ0xfYXJnc3owMF8zNjQ2O29ial90IEJnTF9mdW56MDBfMzY0NTsKQmdMX2Z1bnow MF8zNjQ1ID0gQmdMX2NhcnpkMjE2OTV6ZDJfNjYwOyAKQmdMX2FyZ3N6MDBfMzY0NiA9IEJnTF9j ZHJ6ZDIxNjY4emQyXzY1MjsgCkJnTF9hcmdzejAwXzQ1NyA9IEJnTF9hcmdzejAwXzM2NDY7IApC Z0xfZnVuejAwXzQ1NiA9IEJnTF9mdW56MDBfMzY0NTsgCmdvdG8gQmdMX3RhZ3pkMjExNXpkMl80 NTg7fSAgZWxzZSAKeyAKb2JqX3QgQmdMX2FyZ3N6MDBfMzY0ODtvYmpfdCBCZ0xfZnVuejAwXzM2 NDc7CkJnTF9mdW56MDBfMzY0NyA9IEJnTF9jYXJ6ZDIxNjk1emQyXzY2MDsgCkJnTF9hcmdzejAw XzM2NDggPSBCZ0xfY2RyemQyMTY2OHpkMl82NTI7IApCZ0xfYXJnc3owMF80NTQgPSBCZ0xfYXJn c3owMF8zNjQ4OyAKQmdMX2Z1bnowMF80NTMgPSBCZ0xfZnVuejAwXzM2NDc7IApnb3RvIEJnTF90 YWd6ZDIxMTR6ZDJfNDU1O30gfSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAq LwpvYmpfdCBCZ0xfY2FyemQyMTcyOHpkMl82Njc7CkJnTF9jYXJ6ZDIxNzI4emQyXzY2NyA9IApD QVIoQmdMX2V4cHowMF81KTsgCmlmKApQQUlSUChCZ0xfY2FyemQyMTcyOHpkMl82NjcpKQp7IApv YmpfdCBCZ0xfYXJnc3owMF8zNjUzO29ial90IEJnTF9mdW56MDBfMzY1MjsKQmdMX2Z1bnowMF8z NjUyID0gQmdMX2NhcnpkMjE3Mjh6ZDJfNjY3OyAKQmdMX2FyZ3N6MDBfMzY1MyA9IEJnTF9jZHJ6 ZDIxNjY4emQyXzY1MjsgCkJnTF9hcmdzejAwXzQ1NyA9IEJnTF9hcmdzejAwXzM2NTM7IApCZ0xf ZnVuejAwXzQ1NiA9IEJnTF9mdW56MDBfMzY1MjsgCmdvdG8gQmdMX3RhZ3pkMjExNXpkMl80NTg7 fSAgZWxzZSAKeyAKb2JqX3QgQmdMX2FyZ3N6MDBfMzY1NTtvYmpfdCBCZ0xfZnVuejAwXzM2NTQ7 CkJnTF9mdW56MDBfMzY1NCA9IEJnTF9jYXJ6ZDIxNzI4emQyXzY2NzsgCkJnTF9hcmdzejAwXzM2 NTUgPSBCZ0xfY2RyemQyMTY2OHpkMl82NTI7IApCZ0xfYXJnc3owMF80NTQgPSBCZ0xfYXJnc3ow MF8zNjU1OyAKQmdMX2Z1bnowMF80NTMgPSBCZ0xfZnVuejAwXzM2NTQ7IApnb3RvIEJnTF90YWd6 ZDIxMTR6ZDJfNDU1O30gfSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpv YmpfdCBCZ0xfY2FyemQyMTc2MXpkMl82NzI7CkJnTF9jYXJ6ZDIxNzYxemQyXzY3MiA9IApDQVIo QmdMX2V4cHowMF81KTsgCmlmKApQQUlSUChCZ0xfY2FyemQyMTc2MXpkMl82NzIpKQp7IApvYmpf dCBCZ0xfYXJnc3owMF8zNjYwO29ial90IEJnTF9mdW56MDBfMzY1OTsKQmdMX2Z1bnowMF8zNjU5 ID0gQmdMX2NhcnpkMjE3NjF6ZDJfNjcyOyAKQmdMX2FyZ3N6MDBfMzY2MCA9IEJnTF9jZHJ6ZDIx NjY4emQyXzY1MjsgCkJnTF9hcmdzejAwXzQ1NyA9IEJnTF9hcmdzejAwXzM2NjA7IApCZ0xfZnVu ejAwXzQ1NiA9IEJnTF9mdW56MDBfMzY1OTsgCmdvdG8gQmdMX3RhZ3pkMjExNXpkMl80NTg7fSAg ZWxzZSAKeyAKb2JqX3QgQmdMX2FyZ3N6MDBfMzY2MjtvYmpfdCBCZ0xfZnVuejAwXzM2NjE7CkJn TF9mdW56MDBfMzY2MSA9IEJnTF9jYXJ6ZDIxNzYxemQyXzY3MjsgCkJnTF9hcmdzejAwXzM2NjIg PSBCZ0xfY2RyemQyMTY2OHpkMl82NTI7IApCZ0xfYXJnc3owMF80NTQgPSBCZ0xfYXJnc3owMF8z NjYyOyAKQmdMX2Z1bnowMF80NTMgPSBCZ0xfZnVuejAwXzM2NjE7IApnb3RvIEJnTF90YWd6ZDIx MTR6ZDJfNDU1O30gfSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpib29s X3QgQmdMX3Rlc3R6MDBfMzY2MzsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8Kb2JqX3Qg QmdMX2F1eHowMF8zNjY0OwpCZ0xfYXV4ejAwXzM2NjQgPSAKQ0FSKEJnTF9leHB6MDBfNSk7IApC Z0xfdGVzdHowMF8zNjYzID0gCihCZ0xfYXV4ejAwXzM2NjQ9PUJHbF9zeW1ib2wxOTQzejAwenpf X2V2Y29tcGlsZXowMCk7IH0gCmlmKEJnTF90ZXN0ejAwXzM2NjMpCnsgLyogRXZhbC9ldmNvbXBp bGUuc2NtIDk2ICovCmlmKApQQUlSUChCZ0xfY2RyemQyMTY2OHpkMl82NTIpKQp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSA5NiAqLwpCZ0xfYm9keXowMF80NDcgPSAKQ0FSKEJnTF9jZHJ6ZDIxNjY4 emQyXzY1Mik7IApCZ0xfcHJvdGVjdHowMF80NDggPSAKQ0RSKEJnTF9jZHJ6ZDIxNjY4emQyXzY1 Mik7IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxNzUgKi8Kb2JqX3QgQmdMX2xvY3owMF84MDA7 CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDE3NSAqLwpib29sX3QgQmdMX3Rlc3QxMTAyejAwXzE5 MDA7CkJnTF90ZXN0MTEwMnowMF8xOTAwID0gCkVYVEVOREVEX1BBSVJQKEJnTF9leHB6MDBfNSk7 IAppZihCZ0xfdGVzdDExMDJ6MDBfMTkwMCkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTc1ICov CkJnTF9sb2N6MDBfODAwID0gCkNFUihCZ0xfZXhwejAwXzUpOyB9ICBlbHNlIAp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSAxNzUgKi8KQmdMX2xvY3owMF84MDAgPSBCZ0xfbG9jejAwXzEwOyB9IH0g CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDE3NyAqLwpvYmpfdCBCZ0xfYXJnMTQzOXowMF84MDE7 b2JqX3QgQmdMX2FyZzE0NDB6MDBfODAyOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxNzcgKi8K b2JqX3QgQmdMX2FyZzE0NDF6MDBfODAzOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxNzcgKi8K Ym9vbF90IEJnTF90ZXN0MTEwMnowMF8xOTA1OwpCZ0xfdGVzdDExMDJ6MDBfMTkwNSA9IApFWFRF TkRFRF9QQUlSUChCZ0xfYm9keXowMF80NDcpOyAKaWYoQmdMX3Rlc3QxMTAyejAwXzE5MDUpCnsg LyogRXZhbC9ldmNvbXBpbGUuc2NtIDE3NyAqLwpCZ0xfYXJnMTQ0MXowMF84MDMgPSAKQ0VSKEJn TF9ib2R5ejAwXzQ0Nyk7IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDE3NyAqLwpC Z0xfYXJnMTQ0MXowMF84MDMgPSBCZ0xfbG9jejAwXzgwMDsgfSB9IApCZ0xfYXJnMTQzOXowMF84 MDEgPSAKQkdsX2V2Y29tcGlsZXowMHp6X19ldmNvbXBpbGV6MDAoQmdMX2JvZHl6MDBfNDQ3LCBC Z0xfZW52ejAwXzYsIEJnTF9nZW52ejAwXzcsIEJnTF93aGVyZXowMF84LCBCZ0xfbmFtZWR6ZjN6 ZjNfOSwgQmdMX2FyZzE0NDF6MDBfODAzKTsgfSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTgw ICovCm9ial90IEJnTF9hcmcxNDQzejAwXzgwNDsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTgw ICovCmJvb2xfdCBCZ0xfdGVzdDExMDJ6MDBfMTkxMDsKQmdMX3Rlc3QxMTAyejAwXzE5MTAgPSAK RVhURU5ERURfUEFJUlAoQmdMX3Byb3RlY3R6MDBfNDQ4KTsgCmlmKEJnTF90ZXN0MTEwMnowMF8x OTEwKQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxODAgKi8KQmdMX2FyZzE0NDN6MDBfODA0ID0g CkNFUihCZ0xfcHJvdGVjdHowMF80NDgpOyB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNj bSAxODAgKi8KQmdMX2FyZzE0NDN6MDBfODA0ID0gQmdMX2xvY3owMF84MDA7IH0gfSAKQmdMX2Fy ZzE0NDB6MDBfODAyID0gCkJHbF9ldmNvbXBpbGV6ZDJiZWdpbnpkMnp6X19ldmNvbXBpbGV6MDAo QmdMX3Byb3RlY3R6MDBfNDQ4LCBCZ0xfZW52ejAwXzYsIEJnTF9nZW52ejAwXzcsIEJnTF93aGVy ZXowMF84LCBCZ0xfbmFtZWR6ZjN6ZjNfOSwgQmdMX2FyZzE0NDN6MDBfODA0KTsgfSAKeyAvKiBF dmFsL2V2Y29tcGlsZS5zY20gMTc2ICovCm9ial90IEJnTF92MTA0MXowMF8xOTE2Owp7IAppbnQg QmdMX2F1eHowMF8zNjgwOwpCZ0xfYXV4ejAwXzM2ODAgPSAKKGludCkoKChsb25nKTMpKTsgCkJn TF92MTA0MXowMF8xOTE2ID0gCmNyZWF0ZV92ZWN0b3IoQmdMX2F1eHowMF8zNjgwKTsgfSAKeyAv KiBFdmFsL2V2Y29tcGlsZS5zY20gMTc2ICovCm9ial90IEJnTF9hcmcxNTMzejAwXzE5MTg7CkJn TF9hcmcxNTMzejAwXzE5MTggPSAKTUFLRV9QQUlSKEJnTF9hcmcxNDM5ejAwXzgwMSwgQmdMX2Fy ZzE0NDB6MDBfODAyKTsgCnsgCmludCBCZ0xfYXV4ejAwXzM2ODQ7CkJnTF9hdXh6MDBfMzY4NCA9 IAooaW50KSgoKGxvbmcpMikpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNDF6MDBfMTkxNixCZ0xfYXV4 ejAwXzM2ODQsQmdMX2FyZzE1MzN6MDBfMTkxOCk7IH0gfSAKeyAKaW50IEJnTF9hdXh6MDBfMzY4 NzsKQmdMX2F1eHowMF8zNjg3ID0gCihpbnQpKCgobG9uZykxKSk7IApWRUNUT1JfU0VUKEJnTF92 MTA0MXowMF8xOTE2LEJnTF9hdXh6MDBfMzY4NyxCZ0xfbG9jejAwXzgwMCk7IH0gCnsgCm9ial90 IEJnTF9hdXh6MDBfMzY5MjtpbnQgQmdMX2F1eHowMF8zNjkwOwpCZ0xfYXV4ejAwXzM2OTIgPSAK QklOVCgoKGxvbmcpNjQpKTsgCkJnTF9hdXh6MDBfMzY5MCA9IAooaW50KSgoKGxvbmcpMCkpOyAK VkVDVE9SX1NFVChCZ0xfdjEwNDF6MDBfMTkxNixCZ0xfYXV4ejAwXzM2OTAsQmdMX2F1eHowMF8z NjkyKTsgfSAKcmV0dXJuIEJnTF92MTA0MXowMF8xOTE2O30gfSB9IH0gIGVsc2UgCnsgLyogRXZh bC9ldmNvbXBpbGUuc2NtIDk2ICovCm9ial90IEJnTF9jYXJ6ZDIxODAyemQyXzY4MjsKQmdMX2Nh cnpkMjE4MDJ6ZDJfNjgyID0gCkNBUihCZ0xfZXhwejAwXzUpOyAKaWYoClBBSVJQKEJnTF9jYXJ6 ZDIxODAyemQyXzY4MikpCnsgCm9ial90IEJnTF9hcmdzejAwXzM3MDE7b2JqX3QgQmdMX2Z1bnow MF8zNzAwOwpCZ0xfZnVuejAwXzM3MDAgPSBCZ0xfY2FyemQyMTgwMnpkMl82ODI7IApCZ0xfYXJn c3owMF8zNzAxID0gCkNEUihCZ0xfZXhwejAwXzUpOyAKQmdMX2FyZ3N6MDBfNDU3ID0gQmdMX2Fy Z3N6MDBfMzcwMTsgCkJnTF9mdW56MDBfNDU2ID0gQmdMX2Z1bnowMF8zNzAwOyAKZ290byBCZ0xf dGFnemQyMTE1emQyXzQ1ODt9ICBlbHNlIAp7IApvYmpfdCBCZ0xfYXJnc3owMF8zNzA0O29ial90 IEJnTF9mdW56MDBfMzcwMzsKQmdMX2Z1bnowMF8zNzAzID0gQmdMX2NhcnpkMjE4MDJ6ZDJfNjgy OyAKQmdMX2FyZ3N6MDBfMzcwNCA9IApDRFIoQmdMX2V4cHowMF81KTsgCkJnTF9hcmdzejAwXzQ1 NCA9IEJnTF9hcmdzejAwXzM3MDQ7IApCZ0xfZnVuejAwXzQ1MyA9IEJnTF9mdW56MDBfMzcwMzsg CmdvdG8gQmdMX3RhZ3pkMjExNHpkMl80NTU7fSB9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBp bGUuc2NtIDk2ICovCm9ial90IEJnTF9jZHJ6ZDIxODI1emQyXzY4NzsKQmdMX2NkcnpkMjE4MjV6 ZDJfNjg3ID0gCkNEUihCZ0xfZXhwejAwXzUpOyAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYg Ki8KYm9vbF90IEJnTF90ZXN0ejAwXzM3MDc7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICov Cm9ial90IEJnTF9hdXh6MDBfMzcwODsKQmdMX2F1eHowMF8zNzA4ID0gCkNBUihCZ0xfZXhwejAw XzUpOyAKQmdMX3Rlc3R6MDBfMzcwNyA9IAooQmdMX2F1eHowMF8zNzA4PT1CR2xfc3ltYm9sMTkz MnowMHp6X19ldmNvbXBpbGV6MDApOyB9IAppZihCZ0xfdGVzdHowMF8zNzA3KQp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSA5NiAqLwppZigKUEFJUlAoQmdMX2NkcnpkMjE4MjV6ZDJfNjg3KSkKeyAv KiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8Kb2JqX3QgQmdMX2NkcnpkMjE4Mjl6ZDJfNjkwOwpC Z0xfY2RyemQyMTgyOXpkMl82OTAgPSAKQ0RSKEJnTF9jZHJ6ZDIxODI1emQyXzY4Nyk7IAppZigK UEFJUlAoQmdMX2NkcnpkMjE4Mjl6ZDJfNjkwKSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYg Ki8KaWYoCkJHbF9lcXVhbHpmM3pmM3p6X19yNF9lcXVpdmFsZW5jZV82XzJ6MDAoCkNEUihCZ0xf Y2RyemQyMTgyOXpkMl82OTApLCBCTklMKSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gOTYgKi8K QmdMX2Zvcm1hbHN6MDBfNDUwID0gCkNBUihCZ0xfY2RyemQyMTgyNXpkMl82ODcpOyAKQmdMX2Jv ZHl6MDBfNDUxID0gCkNBUihCZ0xfY2RyemQyMTgyOXpkMl82OTApOyAKeyAvKiBFdmFsL2V2Y29t cGlsZS5zY20gMTgzICovCm9ial90IEJnTF9sb2N6MDBfODA1Owp7IC8qIEV2YWwvZXZjb21waWxl LnNjbSAxODMgKi8KYm9vbF90IEJnTF90ZXN0MTEwMnowMF8xOTMwOwpCZ0xfdGVzdDExMDJ6MDBf MTkzMCA9IApFWFRFTkRFRF9QQUlSUChCZ0xfZXhwejAwXzUpOyAKaWYoQmdMX3Rlc3QxMTAyejAw XzE5MzApCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDE4MyAqLwpCZ0xfbG9jejAwXzgwNSA9IApD RVIoQmdMX2V4cHowMF81KTsgfSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTgzICov CkJnTF9sb2N6MDBfODA1ID0gQmdMX2xvY3owMF8xMDsgfSB9IAp7IC8qIEV2YWwvZXZjb21waWxl LnNjbSAxODMgKi8Kb2JqX3QgQmdMX3NjbXpkMmZvcm1hbHN6ZDJfODA2Owp7IC8qIEV2YWwvZXZj b21waWxlLnNjbSAxODcgKi8Kb2JqX3QgQmdMX3pjM2Fub255bW91c3phMzE0NTN6ZTN6ODNfMjk3 NDsKeyAKaW50IEJnTF9hdXh6MDBfMzcyNDtpbnQgQmdMX2F1eHowMF8zNzIyOwpCZ0xfYXV4ejAw XzM3MjQgPSAKKGludCkoKChsb25nKTEpKTsgCkJnTF9hdXh6MDBfMzcyMiA9IAooaW50KSgoKGxv bmcpMykpOyAKQmdMX3pjM2Fub255bW91c3phMzE0NTN6ZTN6ODNfMjk3NCA9IAptYWtlX2Z4X3By b2NlZHVyZShCR2xfemMzYW5vbnltb3VzemEzMTQ1M3plM3o4M3p6X19ldmNvbXBpbGV6MDAsIEJn TF9hdXh6MDBfMzcyMiwgQmdMX2F1eHowMF8zNzI0KTsgfSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5z Y20gMTg3ICovCmludCBCZ0xfYXV4ejAwXzM3Mjc7CkJnTF9hdXh6MDBfMzcyNyA9IAooaW50KSgo KGxvbmcpMCkpOyAKUFJPQ0VEVVJFX1NFVChCZ0xfemMzYW5vbnltb3VzemEzMTQ1M3plM3o4M18y OTc0LCBCZ0xfYXV4ejAwXzM3MjcsIEJnTF9sb2N6MDBfODA1KTsgfSAKQmdMX3NjbXpkMmZvcm1h bHN6ZDJfODA2ID0gCkJHbF9kc3NzbHpkMmZvcm1hbHN6ZDJ6ZTNzY2hlbWV6ZDJmb3JtYWxzejMx enpfX2Rzc3NsejAwKEJnTF9mb3JtYWxzejAwXzQ1MCwgQmdMX3pjM2Fub255bW91c3phMzE0NTN6 ZTN6ODNfMjk3NCk7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDE4NCAqLwpvYmpfdCBCZ0xf dW50eXBlZHpkMnNjbXpkMmZvcm1hbHN6MDBfODA3OwpCZ0xfdW50eXBlZHpkMnNjbXpkMmZvcm1h bHN6MDBfODA3ID0gCkJHbF91bnR5cGV6ZDJpZGVudHphMno3MHp6X19ldmNvbXBpbGV6MDAoQmdM X3NjbXpkMmZvcm1hbHN6ZDJfODA2KTsgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDE4OCAqLwoK eyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTk2ICovCm9ial90IEJnTF9hcmcxNDQ0ejAwXzgwODsK eyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTk2ICovCm9ial90IEJnTF9hcmcxNDQ1ejAwXzgwOTtv YmpfdCBCZ0xfYXJnMTQ0NnowMF84MTA7b2JqX3QgQmdMX2FyZzE0NDd6MDBfODExOwp7IC8qIEV2 YWwvZXZjb21waWxlLnNjbSAxOTYgKi8Kb2JqX3QgQmdMX2FyZzE0NDh6MDBfODEyOwp7IC8qIEV2 YWwvZXZjb21waWxlLnNjbSAxOTYgKi8Kb2JqX3QgQmdMX3pjM2Fub255bW91c3phMzE0NTB6ZTN6 ODNfMjk3MzsKeyAKaW50IEJnTF9hdXh6MDBfMzczNDtpbnQgQmdMX2F1eHowMF8zNzMyOwpCZ0xf YXV4ejAwXzM3MzQgPSAKKGludCkoKChsb25nKTEpKTsgCkJnTF9hdXh6MDBfMzczMiA9IAooaW50 KSgoKGxvbmcpMykpOyAKQmdMX3pjM2Fub255bW91c3phMzE0NTB6ZTN6ODNfMjk3MyA9IAptYWtl X2Z4X3Byb2NlZHVyZShCR2xfemMzYW5vbnltb3VzemEzMTQ1MHplM3o4M3p6X19ldmNvbXBpbGV6 MDAsIEJnTF9hdXh6MDBfMzczMiwgQmdMX2F1eHowMF8zNzM0KTsgfSAKeyAvKiBFdmFsL2V2Y29t cGlsZS5zY20gMTk2ICovCmludCBCZ0xfYXV4ejAwXzM3Mzc7CkJnTF9hdXh6MDBfMzczNyA9IAoo aW50KSgoKGxvbmcpMCkpOyAKUFJPQ0VEVVJFX1NFVChCZ0xfemMzYW5vbnltb3VzemEzMTQ1MHpl M3o4M18yOTczLCBCZ0xfYXV4ejAwXzM3MzcsIEJnTF9sb2N6MDBfODA1KTsgfSAKQmdMX2FyZzE0 NDh6MDBfODEyID0gCkJHbF9tYWtlemQyZHNzc2x6ZDJmdW5jdGlvbnpkMnByZWx1ZGV6ZDJ6el9f ZHNzc2x6MDAoQmdMX2V4cHowMF81LCBCZ0xfZm9ybWFsc3owMF80NTAsIEJnTF9ib2R5ejAwXzQ1 MSwgQmdMX3pjM2Fub255bW91c3phMzE0NTB6ZTN6ODNfMjk3Myk7IH0gCkJnTF9hcmcxNDQ1ejAw XzgwOSA9IApCR2xfZXhwYW5kejAwenpfX2V4cGFuZHowMChCZ0xfYXJnMTQ0OHowMF84MTIpOyB9 IApCZ0xfYXJnMTQ0NnowMF84MTAgPSAKQkdsX19sb29wX3owMHp6X19ldmNvbXBpbGV6MDAoQmdM X2VudnowMF82LCBCZ0xfdW50eXBlZHpkMnNjbXpkMmZvcm1hbHN6MDBfODA3KTsgCnsgLyogRXZh bC9ldmNvbXBpbGUuc2NtIDIwMyAqLwpib29sX3QgQmdMX3Rlc3QxMTAyejAwXzE5MzU7CkJnTF90 ZXN0MTEwMnowMF8xOTM1ID0gCkVYVEVOREVEX1BBSVJQKEJnTF9ib2R5ejAwXzQ1MSk7IAppZihC Z0xfdGVzdDExMDJ6MDBfMTkzNSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjAzICovCkJnTF9h cmcxNDQ3ejAwXzgxMSA9IApDRVIoQmdMX2JvZHl6MDBfNDUxKTsgfSAgZWxzZSAKeyAvKiBFdmFs L2V2Y29tcGlsZS5zY20gMjAzICovCkJnTF9hcmcxNDQ3ejAwXzgxMSA9IEJnTF9sb2N6MDBfODA1 OyB9IH0gCkJnTF9hcmcxNDQ0ejAwXzgwOCA9IApCR2xfZXZjb21waWxlejAwenpfX2V2Y29tcGls ZXowMChCZ0xfYXJnMTQ0NXowMF84MDksIEJnTF9hcmcxNDQ2ejAwXzgxMCwgQmdMX2dlbnZ6MDBf NywgQmdMX3doZXJlejAwXzgsIEJGQUxTRSwgQmdMX2FyZzE0NDd6MDBfODExKTsgfSAKcmV0dXJu IApCR2xfZXZjb21waWxlemQybGFtYmRhemQyenpfX2V2Y29tcGlsZXowMChCZ0xfdW50eXBlZHpk MnNjbXpkMmZvcm1hbHN6MDBfODA3LCBCZ0xfYXJnMTQ0NHowMF84MDgsIEJnTF93aGVyZXowMF84 LCBCZ0xfbmFtZWR6ZjN6ZjNfOSwgQmdMX2xvY3owMF84MDUpO30gfSB9IH0gfSB9ICBlbHNlIAp7 IC8qIEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpvYmpfdCBCZ0xfY2FyemQyMTgzOXpkMl82OTU7 CkJnTF9jYXJ6ZDIxODM5emQyXzY5NSA9IApDQVIoQmdMX2V4cHowMF81KTsgCmlmKApQQUlSUChC Z0xfY2FyemQyMTgzOXpkMl82OTUpKQp7IApvYmpfdCBCZ0xfYXJnc3owMF8zNzU0O29ial90IEJn TF9mdW56MDBfMzc1MzsKQmdMX2Z1bnowMF8zNzUzID0gQmdMX2NhcnpkMjE4Mzl6ZDJfNjk1OyAK QmdMX2FyZ3N6MDBfMzc1NCA9IEJnTF9jZHJ6ZDIxODI1emQyXzY4NzsgCkJnTF9hcmdzejAwXzQ1 NyA9IEJnTF9hcmdzejAwXzM3NTQ7IApCZ0xfZnVuejAwXzQ1NiA9IEJnTF9mdW56MDBfMzc1Mzsg CmdvdG8gQmdMX3RhZ3pkMjExNXpkMl80NTg7fSAgZWxzZSAKeyAKb2JqX3QgQmdMX2FyZ3N6MDBf Mzc1NjtvYmpfdCBCZ0xfZnVuejAwXzM3NTU7CkJnTF9mdW56MDBfMzc1NSA9IEJnTF9jYXJ6ZDIx ODM5emQyXzY5NTsgCkJnTF9hcmdzejAwXzM3NTYgPSBCZ0xfY2RyemQyMTgyNXpkMl82ODc7IApC Z0xfYXJnc3owMF80NTQgPSBCZ0xfYXJnc3owMF8zNzU2OyAKQmdMX2Z1bnowMF80NTMgPSBCZ0xf ZnVuejAwXzM3NTU7IApnb3RvIEJnTF90YWd6ZDIxMTR6ZDJfNDU1O30gfSB9ICBlbHNlIAp7IC8q IEV2YWwvZXZjb21waWxlLnNjbSA5NiAqLwpvYmpfdCBCZ0xfY2FyemQyMTg1OXpkMl83MDI7CkJn TF9jYXJ6ZDIxODU5emQyXzcwMiA9IApDQVIoQmdMX2V4cHowMF81KTsgCmlmKApQQUlSUChCZ0xf Y2FyemQyMTg1OXpkMl83MDIpKQp7IApvYmpfdCBCZ0xfYXJnc3owMF8zNzYxO29ial90IEJnTF9m dW56MDBfMzc2MDsKQmdMX2Z1bnowMF8zNzYwID0gQmdMX2NhcnpkMjE4NTl6ZDJfNzAyOyAKQmdM X2FyZ3N6MDBfMzc2MSA9IEJnTF9jZHJ6ZDIxODI1emQyXzY4NzsgCkJnTF9hcmdzejAwXzQ1NyA9 IEJnTF9hcmdzejAwXzM3NjE7IApCZ0xfZnVuejAwXzQ1NiA9IEJnTF9mdW56MDBfMzc2MDsgCmdv dG8gQmdMX3RhZ3pkMjExNXpkMl80NTg7fSAgZWxzZSAKeyAKb2JqX3QgQmdMX2FyZ3N6MDBfMzc2 MztvYmpfdCBCZ0xfZnVuejAwXzM3NjI7CkJnTF9mdW56MDBfMzc2MiA9IEJnTF9jYXJ6ZDIxODU5 emQyXzcwMjsgCkJnTF9hcmdzejAwXzM3NjMgPSBCZ0xfY2RyemQyMTgyNXpkMl82ODc7IApCZ0xf YXJnc3owMF80NTQgPSBCZ0xfYXJnc3owMF8zNzYzOyAKQmdMX2Z1bnowMF80NTMgPSBCZ0xfZnVu ejAwXzM3NjI7IApnb3RvIEJnTF90YWd6ZDIxMTR6ZDJfNDU1O30gfSB9ICBlbHNlIAp7IC8qIEV2 YWwvZXZjb21waWxlLnNjbSA5NiAqLwpvYmpfdCBCZ0xfY2FyemQyMTg3OXpkMl83MDc7CkJnTF9j YXJ6ZDIxODc5emQyXzcwNyA9IApDQVIoQmdMX2V4cHowMF81KTsgCmlmKApQQUlSUChCZ0xfY2Fy emQyMTg3OXpkMl83MDcpKQp7IApvYmpfdCBCZ0xfYXJnc3owMF8zNzY4O29ial90IEJnTF9mdW56 MDBfMzc2NzsKQmdMX2Z1bnowMF8zNzY3ID0gQmdMX2NhcnpkMjE4Nzl6ZDJfNzA3OyAKQmdMX2Fy Z3N6MDBfMzc2OCA9IEJnTF9jZHJ6ZDIxODI1emQyXzY4NzsgCkJnTF9hcmdzejAwXzQ1NyA9IEJn TF9hcmdzejAwXzM3Njg7IApCZ0xfZnVuejAwXzQ1NiA9IEJnTF9mdW56MDBfMzc2NzsgCmdvdG8g QmdMX3RhZ3pkMjExNXpkMl80NTg7fSAgZWxzZSAKeyAKb2JqX3QgQmdMX2FyZ3N6MDBfMzc3MDtv YmpfdCBCZ0xfZnVuejAwXzM3Njk7CkJnTF9mdW56MDBfMzc2OSA9IEJnTF9jYXJ6ZDIxODc5emQy XzcwNzsgCkJnTF9hcmdzejAwXzM3NzAgPSBCZ0xfY2RyemQyMTgyNXpkMl82ODc7IApCZ0xfYXJn c3owMF80NTQgPSBCZ0xfYXJnc3owMF8zNzcwOyAKQmdMX2Z1bnowMF80NTMgPSBCZ0xfZnVuejAw XzM3Njk7IApnb3RvIEJnTF90YWd6ZDIxMTR6ZDJfNDU1O30gfSB9ICBlbHNlIAp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSA5NiAqLwpvYmpfdCBCZ0xfY2FyemQyMTg5OXpkMl83MTI7CkJnTF9jYXJ6 ZDIxODk5emQyXzcxMiA9IApDQVIoQmdMX2V4cHowMF81KTsgCmlmKApQQUlSUChCZ0xfY2FyemQy MTg5OXpkMl83MTIpKQp7IApvYmpfdCBCZ0xfYXJnc3owMF8zNzc1O29ial90IEJnTF9mdW56MDBf Mzc3NDsKQmdMX2Z1bnowMF8zNzc0ID0gQmdMX2NhcnpkMjE4OTl6ZDJfNzEyOyAKQmdMX2FyZ3N6 MDBfMzc3NSA9IEJnTF9jZHJ6ZDIxODI1emQyXzY4NzsgCkJnTF9hcmdzejAwXzQ1NyA9IEJnTF9h cmdzejAwXzM3NzU7IApCZ0xfZnVuejAwXzQ1NiA9IEJnTF9mdW56MDBfMzc3NDsgCmdvdG8gQmdM X3RhZ3pkMjExNXpkMl80NTg7fSAgZWxzZSAKeyAKb2JqX3QgQmdMX2FyZ3N6MDBfMzc3NztvYmpf dCBCZ0xfZnVuejAwXzM3NzY7CkJnTF9mdW56MDBfMzc3NiA9IEJnTF9jYXJ6ZDIxODk5emQyXzcx MjsgCkJnTF9hcmdzejAwXzM3NzcgPSBCZ0xfY2RyemQyMTgyNXpkMl82ODc7IApCZ0xfYXJnc3ow MF80NTQgPSBCZ0xfYXJnc3owMF8zNzc3OyAKQmdMX2Z1bnowMF80NTMgPSBCZ0xfZnVuejAwXzM3 NzY7IApnb3RvIEJnTF90YWd6ZDIxMTR6ZDJfNDU1O30gfSB9IH0gfSB9IH0gfSB9IH0gfSB9IH0g fSB9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDk2ICovCkJnTF9hdG9tejAwXzQy NyA9IEJnTF9leHB6MDBfNTsgCmlmKApTWU1CT0xQKEJnTF9hdG9tejAwXzQyNykpCnsgLyogRXZh bC9ldmNvbXBpbGUuc2NtIDEwNiAqLwpyZXR1cm4gCkJHbF9ldmNvbXBpbGV6ZDJyZWZ6ZDJ6el9f ZXZjb21waWxlejAwKApCR2xfdmFyaWFibGV6MDB6el9fZXZjb21waWxlejAwKEJnTF9sb2N6MDBf MTAsIEJnTF9hdG9tejAwXzQyNywgQmdMX2VudnowMF82LCBCZ0xfZ2VudnowMF83KSwgQmdMX2xv Y3owMF8xMCk7fSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTA4ICovCmJvb2xfdCBC Z0xfdGVzdHowMF8zNzgyOwppZigKVkVDVE9SUChCZ0xfYXRvbXowMF80MjcpKQp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSAxMDggKi8KQmdMX3Rlc3R6MDBfMzc4MiA9ICgoYm9vbF90KTEpCjsgfSAg ZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTA4ICovCkJnTF90ZXN0ejAwXzM3ODIgPSAK U1RSVUNUUChCZ0xfYXRvbXowMF80MjcpCjsgfSAKaWYoQmdMX3Rlc3R6MDBfMzc4MikKeyAvKiBF dmFsL2V2Y29tcGlsZS5zY20gMTA4ICovCnJldHVybiAKQkdsX2V2Y29tcGlsZXpkMmVycm9yemQy enpfX2V2Y29tcGlsZXowMChCZ0xfbG9jejAwXzEwLCBCR2xfc3RyaW5nMTkyNnowMHp6X19ldmNv bXBpbGV6MDAsIEJHbF9zdHJpbmcxOTI3ejAwenpfX2V2Y29tcGlsZXowMCwgQmdMX2V4cHowMF81 KTt9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxMDggKi8KaWYoClZFQ1RPUlAoQmdM X2F0b216MDBfNDI3KSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTE1ICovCnsgLyogRXZhbC9l dmNvbXBpbGUuc2NtIDExNSAqLwpvYmpfdCBCZ0xfdjEwMjJ6MDBfMTY4NjsKeyAKaW50IEJnTF9h dXh6MDBfMzc4OTsKQmdMX2F1eHowMF8zNzg5ID0gCihpbnQpKCgobG9uZykzKSk7IApCZ0xfdjEw MjJ6MDBfMTY4NiA9IApjcmVhdGVfdmVjdG9yKEJnTF9hdXh6MDBfMzc4OSk7IH0gCnsgCmludCBC Z0xfYXV4ejAwXzM3OTI7CkJnTF9hdXh6MDBfMzc5MiA9IAooaW50KSgoKGxvbmcpMikpOyAKVkVD VE9SX1NFVChCZ0xfdjEwMjJ6MDBfMTY4NixCZ0xfYXV4ejAwXzM3OTIsQmdMX2F0b216MDBfNDI3 KTsgfSAKeyAKaW50IEJnTF9hdXh6MDBfMzc5NTsKQmdMX2F1eHowMF8zNzk1ID0gCihpbnQpKCgo bG9uZykxKSk7IApWRUNUT1JfU0VUKEJnTF92MTAyMnowMF8xNjg2LEJnTF9hdXh6MDBfMzc5NSxC Z0xfbG9jejAwXzEwKTsgfSAKeyAKb2JqX3QgQmdMX2F1eHowMF8zODAwO2ludCBCZ0xfYXV4ejAw XzM3OTg7CkJnTF9hdXh6MDBfMzgwMCA9IApCSU5UKCgobG9uZyktMSkpOyAKQmdMX2F1eHowMF8z Nzk4ID0gCihpbnQpKCgobG9uZykwKSk7IApWRUNUT1JfU0VUKEJnTF92MTAyMnowMF8xNjg2LEJn TF9hdXh6MDBfMzc5OCxCZ0xfYXV4ejAwXzM4MDApOyB9IApyZXR1cm4gQmdMX3YxMDIyejAwXzE2 ODY7fSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxMTUgKi8KcmV0dXJuIEJnTF9h dG9tejAwXzQyNzt9IH0gfSB9IH0gfSB9IAp9CgoKCi8qIF9ldmNvbXBpbGUgKi8Kb2JqX3QgQkds X19ldmNvbXBpbGV6MDB6el9fZXZjb21waWxlejAwKG9ial90IEJnTF9lbnZ6MDBfMjk3Niwgb2Jq X3QgQmdMX2V4cHowMF8yOTc3LCBvYmpfdCBCZ0xfZW52ejAwXzI5NzgsIG9ial90IEJnTF9nZW52 ejAwXzI5NzksIG9ial90IEJnTF93aGVyZXowMF8yOTgwLCBvYmpfdCBCZ0xfbmFtZWR6ZjN6ZjNf Mjk4MSwgb2JqX3QgQmdMX2xvY3owMF8yOTgyKQp7IEFOX09CSkVDVDsKeyAvKiBFdmFsL2V2Y29t cGlsZS5zY20gOTUgKi8KcmV0dXJuIApCR2xfZXZjb21waWxlejAwenpfX2V2Y29tcGlsZXowMChC Z0xfZXhwejAwXzI5NzcsIEJnTF9lbnZ6MDBfMjk3OCwgQmdMX2dlbnZ6MDBfMjk3OSwgQmdMX3do ZXJlejAwXzI5ODAsIEJnTF9uYW1lZHpmM3pmM18yOTgxLCBCZ0xfbG9jejAwXzI5ODIpO30gCn0K CgoKLyogPGFub255bW91czoxNDUwPiAqLwpvYmpfdCBCR2xfemMzYW5vbnltb3VzemEzMTQ1MHpl M3o4M3p6X19ldmNvbXBpbGV6MDAob2JqX3QgQmdMX2VudnowMF8yOTgzLCBvYmpfdCBCZ0xfcHJv Y3owMF8yOTg1LCBvYmpfdCBCZ0xfbXNnejAwXzI5ODYsIG9ial90IEJnTF9vYmp6MDBfMjk4NykK eyBBTl9PQkpFQ1Q7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDE5NSAqLwp7IC8qIEV2YWwvZXZj b21waWxlLnNjbSAxOTYgKi8Kb2JqX3QgQmdMX2xvY3owMF8yOTg0Owp7IC8qIEV2YWwvZXZjb21w aWxlLnNjbSAxOTYgKi8KaW50IEJnTF9hdXh6MDBfMzgwNDsKQmdMX2F1eHowMF8zODA0ID0gCihp bnQpKCgobG9uZykwKSk7IApCZ0xfbG9jejAwXzI5ODQgPSAKUFJPQ0VEVVJFX1JFRihCZ0xfZW52 ejAwXzI5ODMsIEJnTF9hdXh6MDBfMzgwNCk7IH0gCnsgCm9ial90IEJnTF9wcm9jejAwXzgxNDtv YmpfdCBCZ0xfbXNnejAwXzgxNTtvYmpfdCBCZ0xfb2JqejAwXzgxNjsKQmdMX3Byb2N6MDBfODE0 ID0gQmdMX3Byb2N6MDBfMjk4NTsgCkJnTF9tc2d6MDBfODE1ID0gQmdMX21zZ3owMF8yOTg2OyAK QmdMX29ianowMF84MTYgPSBCZ0xfb2JqejAwXzI5ODc7IApyZXR1cm4gCkJHbF9ldmNvbXBpbGV6 ZDJlcnJvcnpkMnp6X19ldmNvbXBpbGV6MDAoQmdMX2xvY3owMF8yOTg0LCBCZ0xfcHJvY3owMF84 MTQsIEJnTF9tc2d6MDBfODE1LCBCZ0xfb2JqejAwXzgxNik7fSB9IH0gCn0KCgoKLyogPGFub255 bW91czoxNDUzPiAqLwpvYmpfdCBCR2xfemMzYW5vbnltb3VzemEzMTQ1M3plM3o4M3p6X19ldmNv bXBpbGV6MDAob2JqX3QgQmdMX2VudnowMF8yOTg4LCBvYmpfdCBCZ0xfcHJvY3owMF8yOTkwLCBv YmpfdCBCZ0xfbXNnejAwXzI5OTEsIG9ial90IEJnTF9vYmp6MDBfMjk5MikKeyBBTl9PQkpFQ1Q7 CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDE4NiAqLwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAx ODcgKi8Kb2JqX3QgQmdMX2xvY3owMF8yOTg5Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxODcg Ki8KaW50IEJnTF9hdXh6MDBfMzgwODsKQmdMX2F1eHowMF8zODA4ID0gCihpbnQpKCgobG9uZykw KSk7IApCZ0xfbG9jejAwXzI5ODkgPSAKUFJPQ0VEVVJFX1JFRihCZ0xfZW52ejAwXzI5ODgsIEJn TF9hdXh6MDBfMzgwOCk7IH0gCnsgCm9ial90IEJnTF9wcm9jejAwXzgyMDtvYmpfdCBCZ0xfbXNn ejAwXzgyMTtvYmpfdCBCZ0xfb2JqejAwXzgyMjsKQmdMX3Byb2N6MDBfODIwID0gQmdMX3Byb2N6 MDBfMjk5MDsgCkJnTF9tc2d6MDBfODIxID0gQmdMX21zZ3owMF8yOTkxOyAKQmdMX29ianowMF84 MjIgPSBCZ0xfb2JqejAwXzI5OTI7IApyZXR1cm4gCkJHbF9ldmNvbXBpbGV6ZDJlcnJvcnpkMnp6 X19ldmNvbXBpbGV6MDAoQmdMX2xvY3owMF8yOTg5LCBCZ0xfcHJvY3owMF84MjAsIEJnTF9tc2d6 MDBfODIxLCBCZ0xfb2JqejAwXzgyMik7fSB9IH0gCn0KCgoKLyogPGFub255bW91czoxNDAwPiAq LwpvYmpfdCBCR2xfemMzYW5vbnltb3VzemEzMTQwMHplM3o4M3p6X19ldmNvbXBpbGV6MDAob2Jq X3QgQmdMX2VudnowMF8yOTkzKQp7IEFOX09CSkVDVDsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20g MTQwICovCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDE0MCAqLwpvYmpfdCBCZ0xfZXhwejAwXzI5 OTQ7b2JqX3QgQmdMX2xvY3owMF8yOTk1O29ial90IEJnTF92YWx6MDBfMjk5NjtvYmpfdCBCZ0xf Z2VudnowMF8yOTk3O29ial90IEJnTF92YXJ6MDBfMjk5ODsKeyAvKiBFdmFsL2V2Y29tcGlsZS5z Y20gMTQwICovCmludCBCZ0xfYXV4ejAwXzM4MTI7CkJnTF9hdXh6MDBfMzgxMiA9IAooaW50KSgo KGxvbmcpMCkpOyAKQmdMX2V4cHowMF8yOTk0ID0gClBST0NFRFVSRV9SRUYoQmdMX2VudnowMF8y OTkzLCBCZ0xfYXV4ejAwXzM4MTIpOyB9IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxNDAgKi8K aW50IEJnTF9hdXh6MDBfMzgxNTsKQmdMX2F1eHowMF8zODE1ID0gCihpbnQpKCgobG9uZykxKSk7 IApCZ0xfbG9jejAwXzI5OTUgPSAKUFJPQ0VEVVJFX1JFRihCZ0xfZW52ejAwXzI5OTMsIEJnTF9h dXh6MDBfMzgxNSk7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDE0MCAqLwppbnQgQmdMX2F1 eHowMF8zODE4OwpCZ0xfYXV4ejAwXzM4MTggPSAKKGludCkoKChsb25nKTIpKTsgCkJnTF92YWx6 MDBfMjk5NiA9IApQUk9DRURVUkVfUkVGKEJnTF9lbnZ6MDBfMjk5MywgQmdMX2F1eHowMF8zODE4 KTsgfSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMTQwICovCmludCBCZ0xfYXV4ejAwXzM4MjE7 CkJnTF9hdXh6MDBfMzgyMSA9IAooaW50KSgoKGxvbmcpMykpOyAKQmdMX2dlbnZ6MDBfMjk5NyA9 IApQUk9DRURVUkVfUkVGKEJnTF9lbnZ6MDBfMjk5MywgQmdMX2F1eHowMF8zODIxKTsgfSAKeyAv KiBFdmFsL2V2Y29tcGlsZS5zY20gMTQwICovCmludCBCZ0xfYXV4ejAwXzM4MjQ7CkJnTF9hdXh6 MDBfMzgyNCA9IAooaW50KSgoKGxvbmcpNCkpOyAKQmdMX3ZhcnowMF8yOTk4ID0gClBST0NFRFVS RV9SRUYoQmdMX2VudnowMF8yOTkzLCBCZ0xfYXV4ejAwXzM4MjQpOyB9IAp7IAoKeyAvKiBFdmFs L2V2Y29tcGlsZS5zY20gMTQwICovCm9ial90IEJnTF9hcmcxNDAyejAwXzc1NzsKeyAvKiBFdmFs L2V2Y29tcGlsZS5zY20gMTQxICovCmJvb2xfdCBCZ0xfdGVzdDExMDJ6MDBfMTc3NjsKQmdMX3Rl c3QxMTAyejAwXzE3NzYgPSAKRVhURU5ERURfUEFJUlAoQmdMX2V4cHowMF8yOTk0KTsgCmlmKEJn TF90ZXN0MTEwMnowMF8xNzc2KQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAxNDEgKi8KQmdMX2Fy ZzE0MDJ6MDBfNzU3ID0gCkNFUihCZ0xfZXhwejAwXzI5OTQpOyB9ICBlbHNlIAp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSAxNDEgKi8KQmdMX2FyZzE0MDJ6MDBfNzU3ID0gQmdMX2xvY3owMF8yOTk1 OyB9IH0gCnJldHVybiAKQkdsX2V2Y29tcGlsZXowMHp6X19ldmNvbXBpbGV6MDAoQmdMX3ZhbHow MF8yOTk2LCBCTklMLCBCZ0xfZ2VudnowMF8yOTk3LCBCZ0xfdmFyejAwXzI5OTgsIEJUUlVFLCBC Z0xfYXJnMTQwMnowMF83NTcpO30gfSB9IH0gCn0KCgoKLyogZXZjb21waWxlLWNuc3QgKi8Kb2Jq X3QgQkdsX2V2Y29tcGlsZXpkMmNuc3R6ZDJ6el9fZXZjb21waWxlejAwKG9ial90IEJnTF9jbnN0 ejAwXzExLCBvYmpfdCBCZ0xfbG9jejAwXzEyKQp7IEFOX09CSkVDVDsKeyAvKiBFdmFsL2V2Y29t cGlsZS5zY20gMjQwICovCmlmKApWRUNUT1JQKEJnTF9jbnN0ejAwXzExKSkKeyAvKiBFdmFsL2V2 Y29tcGlsZS5zY20gMjQyICovCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDI0MiAqLwpvYmpfdCBC Z0xfdjEwMjJ6MDBfMTk5MjsKeyAKaW50IEJnTF9hdXh6MDBfMzgzMzsKQmdMX2F1eHowMF8zODMz ID0gCihpbnQpKCgobG9uZykzKSk7IApCZ0xfdjEwMjJ6MDBfMTk5MiA9IApjcmVhdGVfdmVjdG9y KEJnTF9hdXh6MDBfMzgzMyk7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzM4MzY7CkJnTF9hdXh6MDBf MzgzNiA9IAooaW50KSgoKGxvbmcpMikpOyAKVkVDVE9SX1NFVChCZ0xfdjEwMjJ6MDBfMTk5MixC Z0xfYXV4ejAwXzM4MzYsQmdMX2Nuc3R6MDBfMTEpOyB9IAp7IAppbnQgQmdMX2F1eHowMF8zODM5 OwpCZ0xfYXV4ejAwXzM4MzkgPSAKKGludCkoKChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdMX3Yx MDIyejAwXzE5OTIsQmdMX2F1eHowMF8zODM5LEJnTF9sb2N6MDBfMTIpOyB9IAp7IApvYmpfdCBC Z0xfYXV4ejAwXzM4NDQ7aW50IEJnTF9hdXh6MDBfMzg0MjsKQmdMX2F1eHowMF8zODQ0ID0gCkJJ TlQoKChsb25nKS0xKSk7IApCZ0xfYXV4ejAwXzM4NDIgPSAKKGludCkoKChsb25nKTApKTsgClZF Q1RPUl9TRVQoQmdMX3YxMDIyejAwXzE5OTIsQmdMX2F1eHowMF8zODQyLEJnTF9hdXh6MDBfMzg0 NCk7IH0gCnJldHVybiBCZ0xfdjEwMjJ6MDBfMTk5Mjt9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNv bXBpbGUuc2NtIDI0MiAqLwpyZXR1cm4gQmdMX2Nuc3R6MDBfMTE7fSB9IAp9CgoKCi8qIGV2Y29t cGlsZS1yZWYgKi8Kb2JqX3QgQkdsX2V2Y29tcGlsZXpkMnJlZnpkMnp6X19ldmNvbXBpbGV6MDAo b2JqX3QgQmdMX3ZhcmlhYmxlejAwXzEzLCBvYmpfdCBCZ0xfbG9jejAwXzE0KQp7IEFOX09CSkVD VDsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjUwICovCnsgLyogRXZhbC9ldmNvbXBpbGUuc2Nt IDI1MiAqLwpib29sX3QgQmdMX3Rlc3QxNDc4ejAwXzg2OTsKaWYoClZFQ1RPUlAoQmdMX3Zhcmlh YmxlejAwXzEzKSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjUyICovCmludCBCZ0xfYXJnMTc4 M3owMF8yMDA1OwpCZ0xfYXJnMTc4M3owMF8yMDA1ID0gClZFQ1RPUl9MRU5HVEgoQmdMX3Zhcmlh YmxlejAwXzEzKTsgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDI1MiAqLwpsb25nIEJnTF9hdXh6 MDBfMzg1MDsKQmdMX2F1eHowMF8zODUwID0gCihsb25nKShCZ0xfYXJnMTc4M3owMF8yMDA1KTsg CkJnTF90ZXN0MTQ3OHowMF84NjkgPSAKKEJnTF9hdXh6MDBfMzg1MD09KChsb25nKTMpKTsgfSB9 ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAyNTIgKi8KQmdMX3Rlc3QxNDc4ejAwXzg2 OSA9ICgoYm9vbF90KTApOyB9IAppZihCZ0xfdGVzdDE0Nzh6MDBfODY5KQp7IC8qIEV2YWwvZXZj b21waWxlLnNjbSAyNTIgKi8KeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjUzICovCm9ial90IEJn TF92MTAyM3owMF84NzA7CnsgCmludCBCZ0xfYXV4ejAwXzM4NTQ7CkJnTF9hdXh6MDBfMzg1NCA9 IAooaW50KSgoKGxvbmcpMykpOyAKQmdMX3YxMDIzejAwXzg3MCA9IApjcmVhdGVfdmVjdG9yKEJn TF9hdXh6MDBfMzg1NCk7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzM4NTc7CkJnTF9hdXh6MDBfMzg1 NyA9IAooaW50KSgoKGxvbmcpMikpOyAKVkVDVE9SX1NFVChCZ0xfdjEwMjN6MDBfODcwLEJnTF9h dXh6MDBfMzg1NyxCZ0xfdmFyaWFibGV6MDBfMTMpOyB9IAp7IAppbnQgQmdMX2F1eHowMF8zODYw OwpCZ0xfYXV4ejAwXzM4NjAgPSAKKGludCkoKChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdMX3Yx MDIzejAwXzg3MCxCZ0xfYXV4ejAwXzM4NjAsQmdMX2xvY3owMF8xNCk7IH0gCnsgLyogRXZhbC9l dmNvbXBpbGUuc2NtIDI1MyAqLwpsb25nIEJnTF9hcmcxNDgxejAwXzg3MjsKeyAvKiBFdmFsL2V2 Y29tcGlsZS5zY20gMjUzICovCmJvb2xfdCBCZ0xfdGVzdHowMF8zODYzOwp7IC8qIEV2YWwvZXZj b21waWxlLnNjbSAyNTMgKi8Kb2JqX3QgQmdMX2F1eHowMF8zODY4O29ial90IEJnTF9hdXh6MDBf Mzg2NDsKQmdMX2F1eHowMF8zODY4ID0gCkJJTlQoKChsb25nKTEpKTsgCnsgCmludCBCZ0xfYXV4 ejAwXzM4NjU7CkJnTF9hdXh6MDBfMzg2NSA9IAooaW50KSgoKGxvbmcpMCkpOyAKQmdMX2F1eHow MF8zODY0ID0gClZFQ1RPUl9SRUYoQmdMX3ZhcmlhYmxlejAwXzEzLEJnTF9hdXh6MDBfMzg2NSk7 IH0gCkJnTF90ZXN0ejAwXzM4NjMgPSAKKEJnTF9hdXh6MDBfMzg2ND09QmdMX2F1eHowMF8zODY4 KTsgfSAKaWYoQmdMX3Rlc3R6MDBfMzg2MykKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjUzICov CkJnTF9hcmcxNDgxejAwXzg3MiA9ICgobG9uZyk1KTsgfSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29t cGlsZS5zY20gMjUzICovCkJnTF9hcmcxNDgxejAwXzg3MiA9ICgobG9uZyk2KTsgfSB9IAp7IApv YmpfdCBCZ0xfYXV4ejAwXzM4NzM7aW50IEJnTF9hdXh6MDBfMzg3MTsKQmdMX2F1eHowMF8zODcz ID0gCkJJTlQoQmdMX2FyZzE0ODF6MDBfODcyKTsgCkJnTF9hdXh6MDBfMzg3MSA9IAooaW50KSgo KGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwMjN6MDBfODcwLEJnTF9hdXh6MDBfMzg3MSxC Z0xfYXV4ejAwXzM4NzMpOyB9IH0gCnJldHVybiBCZ0xfdjEwMjN6MDBfODcwO30gfSAgZWxzZSAK eyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjU2ICovCmJvb2xfdCBCZ0xfdGVzdHowMF8zODc2Owpp ZigKUEFJUlAoQmdMX3ZhcmlhYmxlejAwXzEzKSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjU2 ICovCm9ial90IEJnTF9hdXh6MDBfMzg3OTsKQmdMX2F1eHowMF8zODc5ID0gCkNBUihCZ0xfdmFy aWFibGV6MDBfMTMpOyAKQmdMX3Rlc3R6MDBfMzg3NiA9IAooQmdMX2F1eHowMF8zODc5PT1CR2xf c3ltYm9sMTk0NHowMHp6X19ldmNvbXBpbGV6MDApOyB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21w aWxlLnNjbSAyNTYgKi8KQmdMX3Rlc3R6MDBfMzg3NiA9ICgoYm9vbF90KTApCjsgfSAKaWYoQmdM X3Rlc3R6MDBfMzg3NikKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjU2ICovCnsgLyogRXZhbC9l dmNvbXBpbGUuc2NtIDI1NyAqLwpvYmpfdCBCZ0xfdjEwMjR6MDBfODc3Owp7IAppbnQgQmdMX2F1 eHowMF8zODgyOwpCZ0xfYXV4ejAwXzM4ODIgPSAKKGludCkoKChsb25nKTMpKTsgCkJnTF92MTAy NHowMF84NzcgPSAKY3JlYXRlX3ZlY3RvcihCZ0xfYXV4ejAwXzM4ODIpOyB9IAp7IApvYmpfdCBC Z0xfYXV4ejAwXzM4ODc7aW50IEJnTF9hdXh6MDBfMzg4NTsKQmdMX2F1eHowMF8zODg3ID0gCkNE UihCZ0xfdmFyaWFibGV6MDBfMTMpOyAKQmdMX2F1eHowMF8zODg1ID0gCihpbnQpKCgobG9uZyky KSk7IApWRUNUT1JfU0VUKEJnTF92MTAyNHowMF84NzcsQmdMX2F1eHowMF8zODg1LEJnTF9hdXh6 MDBfMzg4Nyk7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzM4OTA7CkJnTF9hdXh6MDBfMzg5MCA9IAoo aW50KSgoKGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwMjR6MDBfODc3LEJnTF9hdXh6MDBf Mzg5MCxCZ0xfbG9jejAwXzE0KTsgfSAKeyAKb2JqX3QgQmdMX2F1eHowMF8zODk1O2ludCBCZ0xf YXV4ejAwXzM4OTM7CkJnTF9hdXh6MDBfMzg5NSA9IApCSU5UKCgobG9uZyk3KSk7IApCZ0xfYXV4 ejAwXzM4OTMgPSAKKGludCkoKChsb25nKTApKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDI0ejAwXzg3 NyxCZ0xfYXV4ejAwXzM4OTMsQmdMX2F1eHowMF8zODk1KTsgfSAKcmV0dXJuIEJnTF92MTAyNHow MF84Nzc7fSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAyNTYgKi8KeyAKCmlmKApJ TlRFR0VSUChCZ0xfdmFyaWFibGV6MDBfMTMpKQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAyNTkg Ki8Kc3dpdGNoKCAKKGxvbmcpQ0lOVChCZ0xfdmFyaWFibGV6MDBfMTMpKSB7IGNhc2UgKChsb25n KTApIDogCmNhc2UgKChsb25nKTEpIDogCmNhc2UgKChsb25nKTIpIDogCmNhc2UgKChsb25nKTMp IDogCgp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAyNjEgKi8Kb2JqX3QgQmdMX3YxMDI4ejAwXzg4 MzsKeyAKaW50IEJnTF9hdXh6MDBfMzkwMDsKQmdMX2F1eHowMF8zOTAwID0gCihpbnQpKCgobG9u ZykzKSk7IApCZ0xfdjEwMjh6MDBfODgzID0gCmNyZWF0ZV92ZWN0b3IoQmdMX2F1eHowMF8zOTAw KTsgfSAKeyAKaW50IEJnTF9hdXh6MDBfMzkwMzsKQmdMX2F1eHowMF8zOTAzID0gCihpbnQpKCgo bG9uZykyKSk7IApWRUNUT1JfU0VUKEJnTF92MTAyOHowMF84ODMsQmdMX2F1eHowMF8zOTAzLEJO SUwpOyB9IAp7IAppbnQgQmdMX2F1eHowMF8zOTA2OwpCZ0xfYXV4ejAwXzM5MDYgPSAKKGludCko KChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDI4ejAwXzg4MyxCZ0xfYXV4ejAwXzM5MDYs QmdMX2xvY3owMF8xNCk7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzM5MDk7CkJnTF9hdXh6MDBfMzkw OSA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwMjh6MDBfODgzLEJnTF9h dXh6MDBfMzkwOSxCZ0xfdmFyaWFibGV6MDBfMTMpOyB9IApyZXR1cm4gQmdMX3YxMDI4ejAwXzg4 Mzt9IGJyZWFrOwpkZWZhdWx0OiAKQmdMX2Nhc2VfZWxzZTEwMjZ6MDBfODgwOgp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSAyNjMgKi8Kb2JqX3QgQmdMX3YxMDI1ejAwXzg4NDsKeyAKaW50IEJnTF9h dXh6MDBfMzkxMjsKQmdMX2F1eHowMF8zOTEyID0gCihpbnQpKCgobG9uZykzKSk7IApCZ0xfdjEw MjV6MDBfODg0ID0gCmNyZWF0ZV92ZWN0b3IoQmdMX2F1eHowMF8zOTEyKTsgfSAKeyAKaW50IEJn TF9hdXh6MDBfMzkxNTsKQmdMX2F1eHowMF8zOTE1ID0gCihpbnQpKCgobG9uZykyKSk7IApWRUNU T1JfU0VUKEJnTF92MTAyNXowMF84ODQsQmdMX2F1eHowMF8zOTE1LEJnTF92YXJpYWJsZXowMF8x Myk7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzM5MTg7CkJnTF9hdXh6MDBfMzkxOCA9IAooaW50KSgo KGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwMjV6MDBfODg0LEJnTF9hdXh6MDBfMzkxOCxC Z0xfbG9jejAwXzE0KTsgfSAKeyAKb2JqX3QgQmdMX2F1eHowMF8zOTIzO2ludCBCZ0xfYXV4ejAw XzM5MjE7CkJnTF9hdXh6MDBfMzkyMyA9IApCSU5UKCgobG9uZyk0KSk7IApCZ0xfYXV4ejAwXzM5 MjEgPSAKKGludCkoKChsb25nKTApKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDI1ejAwXzg4NCxCZ0xf YXV4ejAwXzM5MjEsQmdMX2F1eHowMF8zOTIzKTsgfSAKcmV0dXJuIEJnTF92MTAyNXowMF84ODQ7 fSB9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDI1OSAqLwpnb3RvIEJnTF9jYXNl X2Vsc2UxMDI2ejAwXzg4MDt9IH0gfSB9IH0gfSAKfQoKCgovKiBldmNvbXBpbGUtc2V0ICovCm9i al90IEJHbF9ldmNvbXBpbGV6ZDJzZXR6ZDJ6el9fZXZjb21waWxlejAwKG9ial90IEJnTF92YXJp YWJsZXowMF8xNSwgb2JqX3QgQmdMX3ZhbHVlejAwXzE2LCBvYmpfdCBCZ0xfbG9jejAwXzE3KQp7 IEFOX09CSkVDVDsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjY4ICovCnsgLyogRXZhbC9ldmNv bXBpbGUuc2NtIDI3MCAqLwpib29sX3QgQmdMX3Rlc3QxNDg5ejAwXzg4NTsKaWYoClZFQ1RPUlAo QmdMX3ZhcmlhYmxlejAwXzE1KSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjcwICovCmludCBC Z0xfYXJnMTc4M3owMF8yMDYwOwpCZ0xfYXJnMTc4M3owMF8yMDYwID0gClZFQ1RPUl9MRU5HVEgo QmdMX3ZhcmlhYmxlejAwXzE1KTsgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDI3MCAqLwpsb25n IEJnTF9hdXh6MDBfMzkzMTsKQmdMX2F1eHowMF8zOTMxID0gCihsb25nKShCZ0xfYXJnMTc4M3ow MF8yMDYwKTsgCkJnTF90ZXN0MTQ4OXowMF84ODUgPSAKKEJnTF9hdXh6MDBfMzkzMT09KChsb25n KTMpKTsgfSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAyNzAgKi8KQmdMX3Rlc3Qx NDg5ejAwXzg4NSA9ICgoYm9vbF90KTApOyB9IAppZihCZ0xfdGVzdDE0ODl6MDBfODg1KQp7IC8q IEV2YWwvZXZjb21waWxlLnNjbSAyNzAgKi8KeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjcxICov Cm9ial90IEJnTF92MTAyOXowMF84ODY7CnsgCmludCBCZ0xfYXV4ejAwXzM5MzU7CkJnTF9hdXh6 MDBfMzkzNSA9IAooaW50KSgoKGxvbmcpMykpOyAKQmdMX3YxMDI5ejAwXzg4NiA9IApjcmVhdGVf dmVjdG9yKEJnTF9hdXh6MDBfMzkzNSk7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDI3MSAq LwpvYmpfdCBCZ0xfYXJnMTQ5MXowMF84ODg7CkJnTF9hcmcxNDkxejAwXzg4OCA9IApNQUtFX1BB SVIoQmdMX3ZhcmlhYmxlejAwXzE1LCBCZ0xfdmFsdWV6MDBfMTYpOyAKeyAKaW50IEJnTF9hdXh6 MDBfMzkzOTsKQmdMX2F1eHowMF8zOTM5ID0gCihpbnQpKCgobG9uZykyKSk7IApWRUNUT1JfU0VU KEJnTF92MTAyOXowMF84ODYsQmdMX2F1eHowMF8zOTM5LEJnTF9hcmcxNDkxejAwXzg4OCk7IH0g fSAKeyAKaW50IEJnTF9hdXh6MDBfMzk0MjsKQmdMX2F1eHowMF8zOTQyID0gCihpbnQpKCgobG9u ZykxKSk7IApWRUNUT1JfU0VUKEJnTF92MTAyOXowMF84ODYsQmdMX2F1eHowMF8zOTQyLEJnTF9s b2N6MDBfMTcpOyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzM5NDc7aW50IEJnTF9hdXh6MDBfMzk0 NTsKQmdMX2F1eHowMF8zOTQ3ID0gCkJJTlQoKChsb25nKTgpKTsgCkJnTF9hdXh6MDBfMzk0NSA9 IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwMjl6MDBfODg2LEJnTF9hdXh6 MDBfMzk0NSxCZ0xfYXV4ejAwXzM5NDcpOyB9IApyZXR1cm4gQmdMX3YxMDI5ejAwXzg4Njt9IH0g IGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDI3MiAqLwpib29sX3QgQmdMX3Rlc3R6MDBf Mzk1MDsKaWYoClBBSVJQKEJnTF92YXJpYWJsZXowMF8xNSkpCnsgLyogRXZhbC9ldmNvbXBpbGUu c2NtIDI3MiAqLwpvYmpfdCBCZ0xfYXV4ejAwXzM5NTM7CkJnTF9hdXh6MDBfMzk1MyA9IApDQVIo QmdMX3ZhcmlhYmxlejAwXzE1KTsgCkJnTF90ZXN0ejAwXzM5NTAgPSAKKEJnTF9hdXh6MDBfMzk1 Mz09QkdsX3N5bWJvbDE5NDR6MDB6el9fZXZjb21waWxlejAwKTsgfSAgZWxzZSAKeyAvKiBFdmFs L2V2Y29tcGlsZS5zY20gMjcyICovCkJnTF90ZXN0ejAwXzM5NTAgPSAoKGJvb2xfdCkwKQo7IH0g CmlmKEJnTF90ZXN0ejAwXzM5NTApCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDI3MiAqLwp7IC8q IEV2YWwvZXZjb21waWxlLnNjbSAyNzMgKi8Kb2JqX3QgQmdMX3YxMDMwejAwXzg5MDsKeyAKaW50 IEJnTF9hdXh6MDBfMzk1NjsKQmdMX2F1eHowMF8zOTU2ID0gCihpbnQpKCgobG9uZykzKSk7IApC Z0xfdjEwMzB6MDBfODkwID0gCmNyZWF0ZV92ZWN0b3IoQmdMX2F1eHowMF8zOTU2KTsgfSAKeyAv KiBFdmFsL2V2Y29tcGlsZS5zY20gMjczICovCm9ial90IEJnTF9hcmcxNDk1ejAwXzg5MjsKeyAv KiBFdmFsL2V2Y29tcGlsZS5zY20gMjczICovCm9ial90IEJnTF9hdXh6MDBfMzk1OTsKQmdMX2F1 eHowMF8zOTU5ID0gCkNEUihCZ0xfdmFyaWFibGV6MDBfMTUpOyAKQmdMX2FyZzE0OTV6MDBfODky ID0gCk1BS0VfUEFJUihCZ0xfYXV4ejAwXzM5NTksIEJnTF92YWx1ZXowMF8xNik7IH0gCnsgCmlu dCBCZ0xfYXV4ejAwXzM5NjI7CkJnTF9hdXh6MDBfMzk2MiA9IAooaW50KSgoKGxvbmcpMikpOyAK VkVDVE9SX1NFVChCZ0xfdjEwMzB6MDBfODkwLEJnTF9hdXh6MDBfMzk2MixCZ0xfYXJnMTQ5NXow MF84OTIpOyB9IH0gCnsgCmludCBCZ0xfYXV4ejAwXzM5NjU7CkJnTF9hdXh6MDBfMzk2NSA9IAoo aW50KSgoKGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwMzB6MDBfODkwLEJnTF9hdXh6MDBf Mzk2NSxCZ0xfbG9jejAwXzE3KTsgfSAKeyAKb2JqX3QgQmdMX2F1eHowMF8zOTcwO2ludCBCZ0xf YXV4ejAwXzM5Njg7CkJnTF9hdXh6MDBfMzk3MCA9IApCSU5UKCgobG9uZyk5KSk7IApCZ0xfYXV4 ejAwXzM5NjggPSAKKGludCkoKChsb25nKTApKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDMwejAwXzg5 MCxCZ0xfYXV4ejAwXzM5NjgsQmdMX2F1eHowMF8zOTcwKTsgfSAKcmV0dXJuIEJnTF92MTAzMHow MF84OTA7fSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAyNzIgKi8KeyAKCmlmKApJ TlRFR0VSUChCZ0xfdmFyaWFibGV6MDBfMTUpKQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAyNzUg Ki8Kc3dpdGNoKCAKKGxvbmcpQ0lOVChCZ0xfdmFyaWFibGV6MDBfMTUpKSB7IGNhc2UgKChsb25n KTApIDogCmNhc2UgKChsb25nKTEpIDogCmNhc2UgKChsb25nKTIpIDogCmNhc2UgKChsb25nKTMp IDogCgp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAyNzcgKi8Kb2JqX3QgQmdMX3YxMDM0ejAwXzg5 NzsKeyAKaW50IEJnTF9hdXh6MDBfMzk3NTsKQmdMX2F1eHowMF8zOTc1ID0gCihpbnQpKCgobG9u ZykzKSk7IApCZ0xfdjEwMzR6MDBfODk3ID0gCmNyZWF0ZV92ZWN0b3IoQmdMX2F1eHowMF8zOTc1 KTsgfSAKeyAKaW50IEJnTF9hdXh6MDBfMzk3ODsKQmdMX2F1eHowMF8zOTc4ID0gCihpbnQpKCgo bG9uZykyKSk7IApWRUNUT1JfU0VUKEJnTF92MTAzNHowMF84OTcsQmdMX2F1eHowMF8zOTc4LEJn TF92YWx1ZXowMF8xNik7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzM5ODE7CkJnTF9hdXh6MDBfMzk4 MSA9IAooaW50KSgoKGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwMzR6MDBfODk3LEJnTF9h dXh6MDBfMzk4MSxCZ0xfbG9jejAwXzE3KTsgfSAKeyAKb2JqX3QgQmdMX2F1eHowMF8zOTg2O2lu dCBCZ0xfYXV4ejAwXzM5ODQ7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDI3NyAqLwpsb25nIEJn TF9hdXh6MDBfMzk4NzsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjc3ICovCmxvbmcgQmdMX2F1 eHowMF8zOTg4OwpCZ0xfYXV4ejAwXzM5ODggPSAKKGxvbmcpQ0lOVChCZ0xfdmFyaWFibGV6MDBf MTUpOyAKQmdMX2F1eHowMF8zOTg3ID0gCigoKGxvbmcpMTApK0JnTF9hdXh6MDBfMzk4OCk7IH0g CkJnTF9hdXh6MDBfMzk4NiA9IApCSU5UKEJnTF9hdXh6MDBfMzk4Nyk7IH0gCkJnTF9hdXh6MDBf Mzk4NCA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwMzR6MDBfODk3LEJn TF9hdXh6MDBfMzk4NCxCZ0xfYXV4ejAwXzM5ODYpOyB9IApyZXR1cm4gQmdMX3YxMDM0ejAwXzg5 Nzt9IGJyZWFrOwpkZWZhdWx0OiAKQmdMX2Nhc2VfZWxzZTEwMzJ6MDBfODk0Ogp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSAyNzkgKi8Kb2JqX3QgQmdMX3YxMDMxejAwXzkwMDsKeyAKaW50IEJnTF9h dXh6MDBfMzk5MzsKQmdMX2F1eHowMF8zOTkzID0gCihpbnQpKCgobG9uZykzKSk7IApCZ0xfdjEw MzF6MDBfOTAwID0gCmNyZWF0ZV92ZWN0b3IoQmdMX2F1eHowMF8zOTkzKTsgfSAKeyAvKiBFdmFs L2V2Y29tcGlsZS5zY20gMjc5ICovCm9ial90IEJnTF9hcmcxNTAyejAwXzkwMjsKQmdMX2FyZzE1 MDJ6MDBfOTAyID0gCk1BS0VfUEFJUihCZ0xfdmFyaWFibGV6MDBfMTUsIEJnTF92YWx1ZXowMF8x Nik7IAp7IAppbnQgQmdMX2F1eHowMF8zOTk3OwpCZ0xfYXV4ejAwXzM5OTcgPSAKKGludCkoKChs b25nKTIpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDMxejAwXzkwMCxCZ0xfYXV4ejAwXzM5OTcsQmdM X2FyZzE1MDJ6MDBfOTAyKTsgfSB9IAp7IAppbnQgQmdMX2F1eHowMF80MDAwOwpCZ0xfYXV4ejAw XzQwMDAgPSAKKGludCkoKChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDMxejAwXzkwMCxC Z0xfYXV4ejAwXzQwMDAsQmdMX2xvY3owMF8xNyk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDAw NTtpbnQgQmdMX2F1eHowMF80MDAzOwpCZ0xfYXV4ejAwXzQwMDUgPSAKQklOVCgoKGxvbmcpMTQp KTsgCkJnTF9hdXh6MDBfNDAwMyA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xf djEwMzF6MDBfOTAwLEJnTF9hdXh6MDBfNDAwMyxCZ0xfYXV4ejAwXzQwMDUpOyB9IApyZXR1cm4g QmdMX3YxMDMxejAwXzkwMDt9IH0gfSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjc1 ICovCmdvdG8gQmdMX2Nhc2VfZWxzZTEwMzJ6MDBfODk0O30gfSB9IH0gfSB9IAp9CgoKCi8qIGV2 Y29tcGlsZS1iZWdpbiAqLwpvYmpfdCBCR2xfZXZjb21waWxlemQyYmVnaW56ZDJ6el9fZXZjb21w aWxlejAwKG9ial90IEJnTF9ib2R5ejAwXzIyLCBvYmpfdCBCZ0xfZW52ejAwXzIzLCBvYmpfdCBC Z0xfZ2VudnowMF8yNCwgb2JqX3QgQmdMX3doZXJlejAwXzI1LCBvYmpfdCBCZ0xfbmFtZWR6ZjN6 ZjNfMjYsIG9ial90IEJnTF9sb2N6MDBfMjcpCnsgQU5fT0JKRUNUOwp7IC8qIEV2YWwvZXZjb21w aWxlLnNjbSAyOTAgKi8KaWYoCk5VTExQKEJnTF9ib2R5ejAwXzIyKSkKeyAvKiBFdmFsL2V2Y29t cGlsZS5zY20gMjkyICovCnJldHVybiAKQkdsX2V2Y29tcGlsZXowMHp6X19ldmNvbXBpbGV6MDAo QlVOU1BFQywgQmdMX2VudnowMF8yMywgQmdMX2dlbnZ6MDBfMjQsIEJnTF93aGVyZXowMF8yNSwg QmdMX25hbWVkemYzemYzXzI2LCBCZ0xfbG9jejAwXzI3KTt9ICBlbHNlIAp7IC8qIEV2YWwvZXZj b21waWxlLnNjbSAyOTQgKi8KYm9vbF90IEJnTF90ZXN0ejAwXzQwMTM7CnsgLyogRXZhbC9ldmNv bXBpbGUuc2NtIDI5NCAqLwpvYmpfdCBCZ0xfYXV4ejAwXzQwMTQ7CkJnTF9hdXh6MDBfNDAxNCA9 IApDRFIoQmdMX2JvZHl6MDBfMjIpOyAKQmdMX3Rlc3R6MDBfNDAxMyA9IApOVUxMUChCZ0xfYXV4 ejAwXzQwMTQpOyB9IAppZihCZ0xfdGVzdHowMF80MDEzKQp7IC8qIEV2YWwvZXZjb21waWxlLnNj bSAyOTQgKi8KeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjk1ICovCm9ial90IEJnTF9hcmcxNTA4 ejAwXzkwOTtvYmpfdCBCZ0xfYXJnMTUwOXowMF85MTA7CkJnTF9hcmcxNTA4ejAwXzkwOSA9IApD QVIoQmdMX2JvZHl6MDBfMjIpOyAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjk1ICovCm9ial90 IEJnTF9hcmcxNTEwejAwXzkxMTsKQmdMX2FyZzE1MTB6MDBfOTExID0gCkNBUihCZ0xfYm9keXow MF8yMik7IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAyOTUgKi8KYm9vbF90IEJnTF90ZXN0MTEw MnowMF8yMTQxOwpCZ0xfdGVzdDExMDJ6MDBfMjE0MSA9IApFWFRFTkRFRF9QQUlSUChCZ0xfYXJn MTUxMHowMF85MTEpOyAKaWYoQmdMX3Rlc3QxMTAyejAwXzIxNDEpCnsgLyogRXZhbC9ldmNvbXBp bGUuc2NtIDI5NSAqLwpCZ0xfYXJnMTUwOXowMF85MTAgPSAKQ0VSKEJnTF9hcmcxNTEwejAwXzkx MSk7IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDI5NSAqLwpCZ0xfYXJnMTUwOXow MF85MTAgPSBCZ0xfbG9jejAwXzI3OyB9IH0gfSAKcmV0dXJuIApCR2xfZXZjb21waWxlejAwenpf X2V2Y29tcGlsZXowMChCZ0xfYXJnMTUwOHowMF85MDksIEJnTF9lbnZ6MDBfMjMsIEJnTF9nZW52 ejAwXzI0LCBCZ0xfd2hlcmV6MDBfMjUsIEJnTF9uYW1lZHpmM3pmM18yNiwgQmdMX2FyZzE1MDl6 MDBfOTEwKTt9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDI5NCAqLwp7IC8qIEV2 YWwvZXZjb21waWxlLnNjbSAyOTcgKi8Kb2JqX3QgQmdMX2Nib2R5ejAwXzkxMjsKQmdMX2Nib2R5 ejAwXzkxMiA9IApCR2xfbG9vcHowMHp6X19ldmNvbXBpbGV6MDAoQmdMX25hbWVkemYzemYzXzI2 LCBCZ0xfd2hlcmV6MDBfMjUsIEJnTF9nZW52ejAwXzI0LCBCZ0xfZW52ejAwXzIzLCBCZ0xfbG9j ejAwXzI3LCBCZ0xfYm9keXowMF8yMik7IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzMDkgKi8K b2JqX3QgQmdMX3YxMDM3ejAwXzkxMzsKeyAKaW50IEJnTF9hdXh6MDBfNDAyNDsKQmdMX2F1eHow MF80MDI0ID0gCihpbnQpKCgobG9uZykzKSk7IApCZ0xfdjEwMzd6MDBfOTEzID0gCmNyZWF0ZV92 ZWN0b3IoQmdMX2F1eHowMF80MDI0KTsgfSAKeyAKb2JqX3QgQmdMX2F1eHowMF80MDI5O2ludCBC Z0xfYXV4ejAwXzQwMjc7CkJnTF9hdXh6MDBfNDAyOSA9IApCR2xfbGlzdHpkMnplM3ZlY3Rvcnoz MXp6X19yNF92ZWN0b3JzXzZfOHowMChCZ0xfY2JvZHl6MDBfOTEyKTsgCkJnTF9hdXh6MDBfNDAy NyA9IAooaW50KSgoKGxvbmcpMikpOyAKVkVDVE9SX1NFVChCZ0xfdjEwMzd6MDBfOTEzLEJnTF9h dXh6MDBfNDAyNyxCZ0xfYXV4ejAwXzQwMjkpOyB9IAp7IAppbnQgQmdMX2F1eHowMF80MDMyOwpC Z0xfYXV4ejAwXzQwMzIgPSAKKGludCkoKChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDM3 ejAwXzkxMyxCZ0xfYXV4ejAwXzQwMzIsQmdMX2xvY3owMF8yNyk7IH0gCnsgCm9ial90IEJnTF9h dXh6MDBfNDAzNztpbnQgQmdMX2F1eHowMF80MDM1OwpCZ0xfYXV4ejAwXzQwMzcgPSAKQklOVCgo KGxvbmcpMTYpKTsgCkJnTF9hdXh6MDBfNDAzNSA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9S X1NFVChCZ0xfdjEwMzd6MDBfOTEzLEJnTF9hdXh6MDBfNDAzNSxCZ0xfYXV4ejAwXzQwMzcpOyB9 IApyZXR1cm4gQmdMX3YxMDM3ejAwXzkxMzt9IH0gfSB9IH0gCn0KCgoKLyogbG9vcCAqLwpvYmpf dCBCR2xfbG9vcHowMHp6X19ldmNvbXBpbGV6MDAob2JqX3QgQmdMX25hbWVkemYzemYzXzMwMDQs IG9ial90IEJnTF93aGVyZXowMF8zMDAzLCBvYmpfdCBCZ0xfZ2VudnowMF8zMDAyLCBvYmpfdCBC Z0xfZW52ejAwXzMwMDEsIG9ial90IEJnTF9sb2N6MDBfMzAwMCwgb2JqX3QgQmdMX3Jlc3R6MDBf OTE2KQp7IEFOX09CSkVDVDsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMjk3ICovCmlmKApOVUxM UChCZ0xfcmVzdHowMF85MTYpKQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAyOTkgKi8KcmV0dXJu IEJOSUw7fSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzAxICovCmJvb2xfdCBCZ0xf dGVzdHowMF80MDQyOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzMDEgKi8Kb2JqX3QgQmdMX2F1 eHowMF80MDQzOwpCZ0xfYXV4ejAwXzQwNDMgPSAKQ0RSKEJnTF9yZXN0ejAwXzkxNik7IApCZ0xf dGVzdHowMF80MDQyID0gCk5VTExQKEJnTF9hdXh6MDBfNDA0Myk7IH0gCmlmKEJnTF90ZXN0ejAw XzQwNDIpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDMwMSAqLwp7IC8qIEV2YWwvZXZjb21waWxl LnNjbSAzMDIgKi8Kb2JqX3QgQmdMX2FyZzE1MTV6MDBfOTIwOwp7IC8qIEV2YWwvZXZjb21waWxl LnNjbSAzMDIgKi8Kb2JqX3QgQmdMX2FyZzE1MTd6MDBfOTIyO29ial90IEJnTF9hcmcxNTE4ejAw XzkyMzsKQmdMX2FyZzE1MTd6MDBfOTIyID0gCkNBUihCZ0xfcmVzdHowMF85MTYpOyAKeyAvKiBF dmFsL2V2Y29tcGlsZS5zY20gMzAzICovCm9ial90IEJnTF9hcmcxNTE5ejAwXzkyNDsKQmdMX2Fy ZzE1MTl6MDBfOTI0ID0gCkNBUihCZ0xfcmVzdHowMF85MTYpOyAKeyAvKiBFdmFsL2V2Y29tcGls ZS5zY20gMzAzICovCmJvb2xfdCBCZ0xfdGVzdDExMDJ6MDBfMjE1MTsKQmdMX3Rlc3QxMTAyejAw XzIxNTEgPSAKRVhURU5ERURfUEFJUlAoQmdMX2FyZzE1MTl6MDBfOTI0KTsgCmlmKEJnTF90ZXN0 MTEwMnowMF8yMTUxKQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzMDMgKi8KQmdMX2FyZzE1MTh6 MDBfOTIzID0gCkNFUihCZ0xfYXJnMTUxOXowMF85MjQpOyB9ICBlbHNlIAp7IC8qIEV2YWwvZXZj b21waWxlLnNjbSAzMDMgKi8KQmdMX2FyZzE1MTh6MDBfOTIzID0gQmdMX2xvY3owMF8zMDAwOyB9 IH0gfSAKQmdMX2FyZzE1MTV6MDBfOTIwID0gCkJHbF9ldmNvbXBpbGV6MDB6el9fZXZjb21waWxl ejAwKEJnTF9hcmcxNTE3ejAwXzkyMiwgQmdMX2VudnowMF8zMDAxLCBCZ0xfZ2VudnowMF8zMDAy LCBCZ0xfd2hlcmV6MDBfMzAwMywgQmdMX25hbWVkemYzemYzXzMwMDQsIEJnTF9hcmcxNTE4ejAw XzkyMyk7IH0gCnJldHVybiAKTUFLRV9QQUlSKEJnTF9hcmcxNTE1ejAwXzkyMCwgQk5JTCk7fSB9 ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzMDEgKi8KeyAvKiBFdmFsL2V2Y29tcGls ZS5zY20gMzA2ICovCm9ial90IEJnTF9hcmcxNTIwejAwXzkyNTtvYmpfdCBCZ0xfYXJnMTUyMXow MF85MjY7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDMwNiAqLwpvYmpfdCBCZ0xfYXJnMTUyMnow MF85Mjc7b2JqX3QgQmdMX2FyZzE1MjN6MDBfOTI4OwpCZ0xfYXJnMTUyMnowMF85MjcgPSAKQ0FS KEJnTF9yZXN0ejAwXzkxNik7IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzMDcgKi8Kb2JqX3Qg QmdMX2FyZzE1MjR6MDBfOTI5OwpCZ0xfYXJnMTUyNHowMF85MjkgPSAKQ0FSKEJnTF9yZXN0ejAw XzkxNik7IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzMDcgKi8KYm9vbF90IEJnTF90ZXN0MTEw MnowMF8yMTU4OwpCZ0xfdGVzdDExMDJ6MDBfMjE1OCA9IApFWFRFTkRFRF9QQUlSUChCZ0xfYXJn MTUyNHowMF85MjkpOyAKaWYoQmdMX3Rlc3QxMTAyejAwXzIxNTgpCnsgLyogRXZhbC9ldmNvbXBp bGUuc2NtIDMwNyAqLwpCZ0xfYXJnMTUyM3owMF85MjggPSAKQ0VSKEJnTF9hcmcxNTI0ejAwXzky OSk7IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDMwNyAqLwpCZ0xfYXJnMTUyM3ow MF85MjggPSBCZ0xfbG9jejAwXzMwMDA7IH0gfSB9IApCZ0xfYXJnMTUyMHowMF85MjUgPSAKQkds X2V2Y29tcGlsZXowMHp6X19ldmNvbXBpbGV6MDAoQmdMX2FyZzE1MjJ6MDBfOTI3LCBCZ0xfZW52 ejAwXzMwMDEsIEJnTF9nZW52ejAwXzMwMDIsIEJnTF93aGVyZXowMF8zMDAzLCBCRkFMU0UsIEJn TF9hcmcxNTIzejAwXzkyOCk7IH0gCkJnTF9hcmcxNTIxejAwXzkyNiA9IApCR2xfbG9vcHowMHp6 X19ldmNvbXBpbGV6MDAoQmdMX25hbWVkemYzemYzXzMwMDQsIEJnTF93aGVyZXowMF8zMDAzLCBC Z0xfZ2VudnowMF8zMDAyLCBCZ0xfZW52ejAwXzMwMDEsIEJnTF9sb2N6MDBfMzAwMCwgCkNEUihC Z0xfcmVzdHowMF85MTYpKTsgCnJldHVybiAKTUFLRV9QQUlSKEJnTF9hcmcxNTIwejAwXzkyNSwg QmdMX2FyZzE1MjF6MDBfOTI2KTt9IH0gfSB9IAp9CgoKCi8qIGV2Y29tcGlsZS1sYW1iZGEgKi8K b2JqX3QgQkdsX2V2Y29tcGlsZXpkMmxhbWJkYXpkMnp6X19ldmNvbXBpbGV6MDAob2JqX3QgQmdM X2Zvcm1hbHN6MDBfMzksIG9ial90IEJnTF9ib2R5ejAwXzQwLCBvYmpfdCBCZ0xfd2hlcmV6MDBf NDEsIG9ial90IEJnTF9uYW1lZHpmM3pmM180Miwgb2JqX3QgQmdMX2xvY3owMF80MykKeyBBTl9P QkpFQ1Q7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM0NCAqLwp7IAoKaWYoCkJHbF9lcXVhbHpm M3pmM3p6X19yNF9lcXVpdmFsZW5jZV82XzJ6MDAoQmdMX2Zvcm1hbHN6MDBfMzksIEJOSUwpKQp7 IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzNDUgKi8KQmdMX3RhZ3pkMjE5NjZ6ZDJfOTQzOgppZigK Q0JPT0woQmdMX25hbWVkemYzemYzXzQyKSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ4ICov Cm9ial90IEJnTF92MTA0MnowMF85OTg7CnsgCmludCBCZ0xfYXV4ejAwXzQwNjY7CkJnTF9hdXh6 MDBfNDA2NiA9IAooaW50KSgoKGxvbmcpMykpOyAKQmdMX3YxMDQyejAwXzk5OCA9IApjcmVhdGVf dmVjdG9yKEJnTF9hdXh6MDBfNDA2Nik7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM0OCAq LwpvYmpfdCBCZ0xfYXJnMTU4NnowMF8xMDAwOwpCZ0xfYXJnMTU4NnowMF8xMDAwID0gCk1BS0Vf UEFJUihCZ0xfd2hlcmV6MDBfNDEsIEJnTF9ib2R5ejAwXzQwKTsgCnsgCmludCBCZ0xfYXV4ejAw XzQwNzA7CkJnTF9hdXh6MDBfNDA3MCA9IAooaW50KSgoKGxvbmcpMikpOyAKVkVDVE9SX1NFVChC Z0xfdjEwNDJ6MDBfOTk4LEJnTF9hdXh6MDBfNDA3MCxCZ0xfYXJnMTU4NnowMF8xMDAwKTsgfSB9 IAp7IAppbnQgQmdMX2F1eHowMF80MDczOwpCZ0xfYXV4ejAwXzQwNzMgPSAKKGludCkoKChsb25n KTEpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDQyejAwXzk5OCxCZ0xfYXV4ejAwXzQwNzMsQmdMX2xv Y3owMF80Myk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDA3ODtpbnQgQmdMX2F1eHowMF80MDc2 Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzNDggKi8KbG9uZyBCZ0xfYXV4ejAwXzQwNzk7Cnsg LyogRXZhbC9ldmNvbXBpbGUuc2NtIDM0OCAqLwpsb25nIEJnTF9hdXh6MDBfNDA4MDsKQmdMX2F1 eHowMF80MDgwID0gCmJnbF9saXN0X2xlbmd0aChCZ0xfZm9ybWFsc3owMF8zOSk7IApCZ0xfYXV4 ejAwXzQwNzkgPSAKKEJnTF9hdXh6MDBfNDA4MCsoKGxvbmcpMzcpKTsgfSAKQmdMX2F1eHowMF80 MDc4ID0gCkJJTlQoQmdMX2F1eHowMF80MDc5KTsgfSAKQmdMX2F1eHowMF80MDc2ID0gCihpbnQp KCgobG9uZykwKSk7IApWRUNUT1JfU0VUKEJnTF92MTA0MnowMF85OTgsQmdMX2F1eHowMF80MDc2 LEJnTF9hdXh6MDBfNDA3OCk7IH0gCnJldHVybiBCZ0xfdjEwNDJ6MDBfOTk4O30gIGVsc2UgCnsg LyogRXZhbC9ldmNvbXBpbGUuc2NtIDM0OSAqLwpvYmpfdCBCZ0xfdjEwNDN6MDBfMTAwNTsKeyAK aW50IEJnTF9hdXh6MDBfNDA4NTsKQmdMX2F1eHowMF80MDg1ID0gCihpbnQpKCgobG9uZykzKSk7 IApCZ0xfdjEwNDN6MDBfMTAwNSA9IApjcmVhdGVfdmVjdG9yKEJnTF9hdXh6MDBfNDA4NSk7IH0g CnsgCmludCBCZ0xfYXV4ejAwXzQwODg7CkJnTF9hdXh6MDBfNDA4OCA9IAooaW50KSgoKGxvbmcp MikpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNDN6MDBfMTAwNSxCZ0xfYXV4ejAwXzQwODgsQmdMX2Jv ZHl6MDBfNDApOyB9IAp7IAppbnQgQmdMX2F1eHowMF80MDkxOwpCZ0xfYXV4ejAwXzQwOTEgPSAK KGludCkoKChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDQzejAwXzEwMDUsQmdMX2F1eHow MF80MDkxLEJnTF9sb2N6MDBfNDMpOyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzQwOTY7aW50IEJn TF9hdXh6MDBfNDA5NDsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ5ICovCmxvbmcgQmdMX2F1 eHowMF80MDk3Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzNDkgKi8KbG9uZyBCZ0xfYXV4ejAw XzQwOTg7CkJnTF9hdXh6MDBfNDA5OCA9IApiZ2xfbGlzdF9sZW5ndGgoQmdMX2Zvcm1hbHN6MDBf MzkpOyAKQmdMX2F1eHowMF80MDk3ID0gCihCZ0xfYXV4ejAwXzQwOTgrKChsb25nKTQyKSk7IH0g CkJnTF9hdXh6MDBfNDA5NiA9IApCSU5UKEJnTF9hdXh6MDBfNDA5Nyk7IH0gCkJnTF9hdXh6MDBf NDA5NCA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNDN6MDBfMTAwNSxC Z0xfYXV4ejAwXzQwOTQsQmdMX2F1eHowMF80MDk2KTsgfSAKcmV0dXJuIEJnTF92MTA0M3owMF8x MDA1O30gfSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ1ICovCmlmKApQQUlSUChC Z0xfZm9ybWFsc3owMF8zOSkpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM0NSAqLwppZigKQkds X2VxdWFsemYzemYzenpfX3I0X2VxdWl2YWxlbmNlXzZfMnowMCgKQ0RSKEJnTF9mb3JtYWxzejAw XzM5KSwgQk5JTCkpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM0NSAqLwpnb3RvIEJnTF90YWd6 ZDIxOTY2emQyXzk0Mzt9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzNDUgKi8Kb2Jq X3QgQmdMX2NkcnpkMjE5Nzl6ZDJfOTUzOwpCZ0xfY2RyemQyMTk3OXpkMl85NTMgPSAKQ0RSKEJn TF9mb3JtYWxzejAwXzM5KTsgCmlmKApQQUlSUChCZ0xfY2RyemQyMTk3OXpkMl85NTMpKQp7IC8q IEV2YWwvZXZjb21waWxlLnNjbSAzNDUgKi8KaWYoCkJHbF9lcXVhbHpmM3pmM3p6X19yNF9lcXVp dmFsZW5jZV82XzJ6MDAoCkNEUihCZ0xfY2RyemQyMTk3OXpkMl85NTMpLCBCTklMKSkKeyAvKiBF dmFsL2V2Y29tcGlsZS5zY20gMzQ1ICovCmdvdG8gQmdMX3RhZ3pkMjE5NjZ6ZDJfOTQzO30gIGVs c2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM0NSAqLwpvYmpfdCBCZ0xfY2RyemQyMTk4Nnpk Ml85NTY7CkJnTF9jZHJ6ZDIxOTg2emQyXzk1NiA9IApDRFIoQmdMX2NkcnpkMjE5Nzl6ZDJfOTUz KTsgCmlmKApQQUlSUChCZ0xfY2RyemQyMTk4NnpkMl85NTYpKQp7IC8qIEV2YWwvZXZjb21waWxl LnNjbSAzNDUgKi8KaWYoCkJHbF9lcXVhbHpmM3pmM3p6X19yNF9lcXVpdmFsZW5jZV82XzJ6MDAo CkNEUihCZ0xfY2RyemQyMTk4NnpkMl85NTYpLCBCTklMKSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5z Y20gMzQ1ICovCmdvdG8gQmdMX3RhZ3pkMjE5NjZ6ZDJfOTQzO30gIGVsc2UgCnsgLyogRXZhbC9l dmNvbXBpbGUuc2NtIDM0NSAqLwpvYmpfdCBCZ0xfY2RyemQyMTk5NHpkMl85NTk7CnsgLyogRXZh bC9ldmNvbXBpbGUuc2NtIDM0NSAqLwpvYmpfdCBCZ0xfYXV4ejAwXzQxMjA7CkJnTF9hdXh6MDBf NDEyMCA9IApDRFIoQmdMX2NkcnpkMjE5Nzl6ZDJfOTUzKTsgCkJnTF9jZHJ6ZDIxOTk0emQyXzk1 OSA9IApDRFIoQmdMX2F1eHowMF80MTIwKTsgfSAKaWYoClBBSVJQKEJnTF9jZHJ6ZDIxOTk0emQy Xzk1OSkpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM0NSAqLwppZigKQkdsX2VxdWFsemYzemYz enpfX3I0X2VxdWl2YWxlbmNlXzZfMnowMCgKQ0RSKEJnTF9jZHJ6ZDIxOTk0emQyXzk1OSksIEJO SUwpKQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzNDUgKi8KZ290byBCZ0xfdGFnemQyMTk2Nnpk Ml85NDM7fSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ1ICovCmJvb2xfdCBCZ0xf dGVzdHowMF80MTI4Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzNDUgKi8Kb2JqX3QgQmdMX2F1 eHowMF80MTI5OwpCZ0xfYXV4ejAwXzQxMjkgPSAKQ0FSKEJnTF9mb3JtYWxzejAwXzM5KTsgCkJn TF90ZXN0ejAwXzQxMjggPSAKUEFJUlAoQmdMX2F1eHowMF80MTI5KTsgfSAKaWYoQmdMX3Rlc3R6 MDBfNDEyOCkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ1ICovCkJnTF90YWd6ZDIxOTcxemQy Xzk0ODoKaWYoCkNCT09MKEJnTF9uYW1lZHpmM3pmM180MikpCnsgLyogRXZhbC9ldmNvbXBpbGUu c2NtIDM2OCAqLwpvYmpfdCBCZ0xfdjEwNTJ6MDBfMTAyNjsKeyAKaW50IEJnTF9hdXh6MDBfNDEz NDsKQmdMX2F1eHowMF80MTM0ID0gCihpbnQpKCgobG9uZykzKSk7IApCZ0xfdjEwNTJ6MDBfMTAy NiA9IApjcmVhdGVfdmVjdG9yKEJnTF9hdXh6MDBfNDEzNCk7IH0gCnsgLyogRXZhbC9ldmNvbXBp bGUuc2NtIDM2OCAqLwpvYmpfdCBCZ0xfYXJnMTYwNnowMF8xMDI4Owp7IC8qIEV2YWwvZXZjb21w aWxlLnNjbSAzNjggKi8Kb2JqX3QgQmdMX3YxMDUzejAwXzEwMjk7CnsgCmludCBCZ0xfYXV4ejAw XzQxMzc7CkJnTF9hdXh6MDBfNDEzNyA9IAooaW50KSgoKGxvbmcpMykpOyAKQmdMX3YxMDUzejAw XzEwMjkgPSAKY3JlYXRlX3ZlY3RvcihCZ0xfYXV4ejAwXzQxMzcpOyB9IAp7IAppbnQgQmdMX2F1 eHowMF80MTQwOwpCZ0xfYXV4ejAwXzQxNDAgPSAKKGludCkoKChsb25nKTIpKTsgClZFQ1RPUl9T RVQoQmdMX3YxMDUzejAwXzEwMjksQmdMX2F1eHowMF80MTQwLEJnTF9mb3JtYWxzejAwXzM5KTsg fSAKeyAKaW50IEJnTF9hdXh6MDBfNDE0MzsKQmdMX2F1eHowMF80MTQzID0gCihpbnQpKCgobG9u ZykxKSk7IApWRUNUT1JfU0VUKEJnTF92MTA1M3owMF8xMDI5LEJnTF9hdXh6MDBfNDE0MyxCZ0xf Ym9keXowMF80MCk7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQxNDY7CkJnTF9hdXh6MDBfNDE0NiA9 IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNTN6MDBfMTAyOSxCZ0xfYXV4 ejAwXzQxNDYsQmdMX3doZXJlejAwXzQxKTsgfSAKQmdMX2FyZzE2MDZ6MDBfMTAyOCA9IEJnTF92 MTA1M3owMF8xMDI5OyB9IAp7IAppbnQgQmdMX2F1eHowMF80MTQ5OwpCZ0xfYXV4ejAwXzQxNDkg PSAKKGludCkoKChsb25nKTIpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDUyejAwXzEwMjYsQmdMX2F1 eHowMF80MTQ5LEJnTF9hcmcxNjA2ejAwXzEwMjgpOyB9IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQx NTI7CkJnTF9hdXh6MDBfNDE1MiA9IAooaW50KSgoKGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xf djEwNTJ6MDBfMTAyNixCZ0xfYXV4ejAwXzQxNTIsQmdMX2xvY3owMF80Myk7IH0gCnsgCm9ial90 IEJnTF9hdXh6MDBfNDE1NztpbnQgQmdMX2F1eHowMF80MTU1OwpCZ0xfYXV4ejAwXzQxNTcgPSAK QklOVCgoKGxvbmcpNTUpKTsgCkJnTF9hdXh6MDBfNDE1NSA9IAooaW50KSgoKGxvbmcpMCkpOyAK VkVDVE9SX1NFVChCZ0xfdjEwNTJ6MDBfMTAyNixCZ0xfYXV4ejAwXzQxNTUsQmdMX2F1eHowMF80 MTU3KTsgfSAKcmV0dXJuIEJnTF92MTA1MnowMF8xMDI2O30gIGVsc2UgCnsgLyogRXZhbC9ldmNv bXBpbGUuc2NtIDM2OSAqLwpvYmpfdCBCZ0xfdjEwNTR6MDBfMTAzMDsKeyAKaW50IEJnTF9hdXh6 MDBfNDE2MDsKQmdMX2F1eHowMF80MTYwID0gCihpbnQpKCgobG9uZykzKSk7IApCZ0xfdjEwNTR6 MDBfMTAzMCA9IApjcmVhdGVfdmVjdG9yKEJnTF9hdXh6MDBfNDE2MCk7IH0gCnsgLyogRXZhbC9l dmNvbXBpbGUuc2NtIDM2OSAqLwpvYmpfdCBCZ0xfYXJnMTYwOHowMF8xMDMyOwpCZ0xfYXJnMTYw OHowMF8xMDMyID0gCk1BS0VfUEFJUihCZ0xfYm9keXowMF80MCwgQmdMX2Zvcm1hbHN6MDBfMzkp OyAKeyAKaW50IEJnTF9hdXh6MDBfNDE2NDsKQmdMX2F1eHowMF80MTY0ID0gCihpbnQpKCgobG9u ZykyKSk7IApWRUNUT1JfU0VUKEJnTF92MTA1NHowMF8xMDMwLEJnTF9hdXh6MDBfNDE2NCxCZ0xf YXJnMTYwOHowMF8xMDMyKTsgfSB9IAp7IAppbnQgQmdMX2F1eHowMF80MTY3OwpCZ0xfYXV4ejAw XzQxNjcgPSAKKGludCkoKChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDU0ejAwXzEwMzAs QmdMX2F1eHowMF80MTY3LEJnTF9sb2N6MDBfNDMpOyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzQx NzI7aW50IEJnTF9hdXh6MDBfNDE3MDsKQmdMX2F1eHowMF80MTcyID0gCkJJTlQoKChsb25nKTU2 KSk7IApCZ0xfYXV4ejAwXzQxNzAgPSAKKGludCkoKChsb25nKTApKTsgClZFQ1RPUl9TRVQoQmdM X3YxMDU0ejAwXzEwMzAsQmdMX2F1eHowMF80MTcwLEJnTF9hdXh6MDBfNDE3Mik7IH0gCnJldHVy biBCZ0xfdjEwNTR6MDBfMTAzMDt9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM0 NSAqLwpib29sX3QgQmdMX3Rlc3R6MDBfNDE3NTsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ1 ICovCm9ial90IEJnTF9hdXh6MDBfNDE3NjsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ1ICov Cm9ial90IEJnTF9hdXh6MDBfNDE3NzsKQmdMX2F1eHowMF80MTc3ID0gCkNEUihCZ0xfZm9ybWFs c3owMF8zOSk7IApCZ0xfYXV4ejAwXzQxNzYgPSAKQ0FSKEJnTF9hdXh6MDBfNDE3Nyk7IH0gCkJn TF90ZXN0ejAwXzQxNzUgPSAKUEFJUlAoQmdMX2F1eHowMF80MTc2KTsgfSAKaWYoQmdMX3Rlc3R6 MDBfNDE3NSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ1ICovCmdvdG8gQmdMX3RhZ3pkMjE5 NzF6ZDJfOTQ4O30gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM0NSAqLwpib29sX3Qg QmdMX3Rlc3R6MDBfNDE4MTsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ1ICovCm9ial90IEJn TF9hdXh6MDBfNDE4MjsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ1ICovCm9ial90IEJnTF9h dXh6MDBfNDE4MzsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ1ICovCm9ial90IEJnTF9hdXh6 MDBfNDE4NDsKQmdMX2F1eHowMF80MTg0ID0gCkNEUihCZ0xfZm9ybWFsc3owMF8zOSk7IApCZ0xf YXV4ejAwXzQxODMgPSAKQ0RSKEJnTF9hdXh6MDBfNDE4NCk7IH0gCkJnTF9hdXh6MDBfNDE4MiA9 IApDQVIoQmdMX2F1eHowMF80MTgzKTsgfSAKQmdMX3Rlc3R6MDBfNDE4MSA9IApQQUlSUChCZ0xf YXV4ejAwXzQxODIpOyB9IAppZihCZ0xfdGVzdHowMF80MTgxKQp7IC8qIEV2YWwvZXZjb21waWxl LnNjbSAzNDUgKi8KZ290byBCZ0xfdGFnemQyMTk3MXpkMl85NDg7fSAgZWxzZSAKeyAvKiBFdmFs L2V2Y29tcGlsZS5zY20gMzQ1ICovCmdvdG8gQmdMX3RhZ3pkMjE5NzF6ZDJfOTQ4O30gfSB9IH0g fSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ1ICovCmJvb2xfdCBCZ0xfdGVzdHow MF80MTg5Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzNDUgKi8Kb2JqX3QgQmdMX2F1eHowMF80 MTkwOwpCZ0xfYXV4ejAwXzQxOTAgPSAKQ0FSKEJnTF9mb3JtYWxzejAwXzM5KTsgCkJnTF90ZXN0 ejAwXzQxODkgPSAKUEFJUlAoQmdMX2F1eHowMF80MTkwKTsgfSAKaWYoQmdMX3Rlc3R6MDBfNDE4 OSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ1ICovCmdvdG8gQmdMX3RhZ3pkMjE5NzF6ZDJf OTQ4O30gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM0NSAqLwpib29sX3QgQmdMX3Rl c3R6MDBfNDE5MzsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ1ICovCm9ial90IEJnTF9hdXh6 MDBfNDE5NDsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ1ICovCm9ial90IEJnTF9hdXh6MDBf NDE5NTsKQmdMX2F1eHowMF80MTk1ID0gCkNEUihCZ0xfZm9ybWFsc3owMF8zOSk7IApCZ0xfYXV4 ejAwXzQxOTQgPSAKQ0FSKEJnTF9hdXh6MDBfNDE5NSk7IH0gCkJnTF90ZXN0ejAwXzQxOTMgPSAK UEFJUlAoQmdMX2F1eHowMF80MTk0KTsgfSAKaWYoQmdMX3Rlc3R6MDBfNDE5MykKeyAvKiBFdmFs L2V2Y29tcGlsZS5zY20gMzQ1ICovCmdvdG8gQmdMX3RhZ3pkMjE5NzF6ZDJfOTQ4O30gIGVsc2Ug CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM0NSAqLwpib29sX3QgQmdMX3Rlc3R6MDBfNDE5OTsK eyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ1ICovCm9ial90IEJnTF9hdXh6MDBfNDIwMDsKeyAv KiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ1ICovCm9ial90IEJnTF9hdXh6MDBfNDIwMTsKeyAvKiBF dmFsL2V2Y29tcGlsZS5zY20gMzQ1ICovCm9ial90IEJnTF9hdXh6MDBfNDIwMjsKQmdMX2F1eHow MF80MjAyID0gCkNEUihCZ0xfZm9ybWFsc3owMF8zOSk7IApCZ0xfYXV4ejAwXzQyMDEgPSAKQ0RS KEJnTF9hdXh6MDBfNDIwMik7IH0gCkJnTF9hdXh6MDBfNDIwMCA9IApDQVIoQmdMX2F1eHowMF80 MjAxKTsgfSAKQmdMX3Rlc3R6MDBfNDE5OSA9IApQQUlSUChCZ0xfYXV4ejAwXzQyMDApOyB9IApp ZihCZ0xfdGVzdHowMF80MTk5KQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzNDUgKi8KZ290byBC Z0xfdGFnemQyMTk3MXpkMl85NDg7fSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ1 ICovCmlmKApDQk9PTChCZ0xfbmFtZWR6ZjN6ZjNfNDIpKQp7IC8qIEV2YWwvZXZjb21waWxlLnNj bSAzNjQgKi8Kb2JqX3QgQmdMX3YxMDUwejAwXzEwMjI7CnsgCmludCBCZ0xfYXV4ejAwXzQyMDk7 CkJnTF9hdXh6MDBfNDIwOSA9IAooaW50KSgoKGxvbmcpMykpOyAKQmdMX3YxMDUwejAwXzEwMjIg PSAKY3JlYXRlX3ZlY3RvcihCZ0xfYXV4ejAwXzQyMDkpOyB9IAp7IC8qIEV2YWwvZXZjb21waWxl LnNjbSAzNjQgKi8Kb2JqX3QgQmdMX2FyZzE2MDR6MDBfMTAyNDsKQmdMX2FyZzE2MDR6MDBfMTAy NCA9IApNQUtFX1BBSVIoQmdMX3doZXJlejAwXzQxLCBCZ0xfYm9keXowMF80MCk7IAp7IAppbnQg QmdMX2F1eHowMF80MjEzOwpCZ0xfYXV4ejAwXzQyMTMgPSAKKGludCkoKChsb25nKTIpKTsgClZF Q1RPUl9TRVQoQmdMX3YxMDUwejAwXzEwMjIsQmdMX2F1eHowMF80MjEzLEJnTF9hcmcxNjA0ejAw XzEwMjQpOyB9IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQyMTY7CkJnTF9hdXh6MDBfNDIxNiA9IAoo aW50KSgoKGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNTB6MDBfMTAyMixCZ0xfYXV4ejAw XzQyMTYsQmdMX2xvY3owMF80Myk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDIyMTtpbnQgQmdM X2F1eHowMF80MjE5OwpCZ0xfYXV4ejAwXzQyMjEgPSAKQklOVCgoKGxvbmcpNTApKTsgCkJnTF9h dXh6MDBfNDIxOSA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNTB6MDBf MTAyMixCZ0xfYXV4ejAwXzQyMTksQmdMX2F1eHowMF80MjIxKTsgfSAKcmV0dXJuIEJnTF92MTA1 MHowMF8xMDIyO30gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM2NSAqLwpvYmpfdCBC Z0xfdjEwNTF6MDBfMTAyNTsKeyAKaW50IEJnTF9hdXh6MDBfNDIyNDsKQmdMX2F1eHowMF80MjI0 ID0gCihpbnQpKCgobG9uZykzKSk7IApCZ0xfdjEwNTF6MDBfMTAyNSA9IApjcmVhdGVfdmVjdG9y KEJnTF9hdXh6MDBfNDIyNCk7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQyMjc7CkJnTF9hdXh6MDBf NDIyNyA9IAooaW50KSgoKGxvbmcpMikpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNTF6MDBfMTAyNSxC Z0xfYXV4ejAwXzQyMjcsQmdMX2JvZHl6MDBfNDApOyB9IAp7IAppbnQgQmdMX2F1eHowMF80MjMw OwpCZ0xfYXV4ejAwXzQyMzAgPSAKKGludCkoKChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdMX3Yx MDUxejAwXzEwMjUsQmdMX2F1eHowMF80MjMwLEJnTF9sb2N6MDBfNDMpOyB9IAp7IApvYmpfdCBC Z0xfYXV4ejAwXzQyMzU7aW50IEJnTF9hdXh6MDBfNDIzMzsKQmdMX2F1eHowMF80MjM1ID0gCkJJ TlQoKChsb25nKTU0KSk7IApCZ0xfYXV4ejAwXzQyMzMgPSAKKGludCkoKChsb25nKTApKTsgClZF Q1RPUl9TRVQoQmdMX3YxMDUxejAwXzEwMjUsQmdMX2F1eHowMF80MjMzLEJnTF9hdXh6MDBfNDIz NSk7IH0gCnJldHVybiBCZ0xfdjEwNTF6MDBfMTAyNTt9IH0gfSB9IH0gfSB9ICBlbHNlIAp7IC8q IEV2YWwvZXZjb21waWxlLnNjbSAzNDUgKi8KYm9vbF90IEJnTF90ZXN0ejAwXzQyMzg7CnsgLyog RXZhbC9ldmNvbXBpbGUuc2NtIDM0NSAqLwpvYmpfdCBCZ0xfYXV4ejAwXzQyMzk7CkJnTF9hdXh6 MDBfNDIzOSA9IApDQVIoQmdMX2Zvcm1hbHN6MDBfMzkpOyAKQmdMX3Rlc3R6MDBfNDIzOCA9IApQ QUlSUChCZ0xfYXV4ejAwXzQyMzkpOyB9IAppZihCZ0xfdGVzdHowMF80MjM4KQp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSAzNDUgKi8KZ290byBCZ0xfdGFnemQyMTk3MXpkMl85NDg7fSAgZWxzZSAK eyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzQ1ICovCmJvb2xfdCBCZ0xfdGVzdHowMF80MjQyOwp7 IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzNDUgKi8Kb2JqX3QgQmdMX2F1eHowMF80MjQzOwpCZ0xf YXV4ejAwXzQyNDMgPSAKQ0FSKEJnTF9jZHJ6ZDIxOTc5emQyXzk1Myk7IApCZ0xfdGVzdHowMF80 MjQyID0gClBBSVJQKEJnTF9hdXh6MDBfNDI0Myk7IH0gCmlmKEJnTF90ZXN0ejAwXzQyNDIpCnsg LyogRXZhbC9ldmNvbXBpbGUuc2NtIDM0NSAqLwpnb3RvIEJnTF90YWd6ZDIxOTcxemQyXzk0ODt9 ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzNDUgKi8KaWYoCkNCT09MKEJnTF9uYW1l ZHpmM3pmM180MikpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM2MCAqLwpvYmpfdCBCZ0xfdjEw NDh6MDBfMTAxODsKeyAKaW50IEJnTF9hdXh6MDBfNDI0ODsKQmdMX2F1eHowMF80MjQ4ID0gCihp bnQpKCgobG9uZykzKSk7IApCZ0xfdjEwNDh6MDBfMTAxOCA9IApjcmVhdGVfdmVjdG9yKEJnTF9h dXh6MDBfNDI0OCk7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM2MCAqLwpvYmpfdCBCZ0xf YXJnMTYwMnowMF8xMDIwOwpCZ0xfYXJnMTYwMnowMF8xMDIwID0gCk1BS0VfUEFJUihCZ0xfd2hl cmV6MDBfNDEsIEJnTF9ib2R5ejAwXzQwKTsgCnsgCmludCBCZ0xfYXV4ejAwXzQyNTI7CkJnTF9h dXh6MDBfNDI1MiA9IAooaW50KSgoKGxvbmcpMikpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNDh6MDBf MTAxOCxCZ0xfYXV4ejAwXzQyNTIsQmdMX2FyZzE2MDJ6MDBfMTAyMCk7IH0gfSAKeyAKaW50IEJn TF9hdXh6MDBfNDI1NTsKQmdMX2F1eHowMF80MjU1ID0gCihpbnQpKCgobG9uZykxKSk7IApWRUNU T1JfU0VUKEJnTF92MTA0OHowMF8xMDE4LEJnTF9hdXh6MDBfNDI1NSxCZ0xfbG9jejAwXzQzKTsg fSAKeyAKb2JqX3QgQmdMX2F1eHowMF80MjYwO2ludCBCZ0xfYXV4ejAwXzQyNTg7CkJnTF9hdXh6 MDBfNDI2MCA9IApCSU5UKCgobG9uZyk0OSkpOyAKQmdMX2F1eHowMF80MjU4ID0gCihpbnQpKCgo bG9uZykwKSk7IApWRUNUT1JfU0VUKEJnTF92MTA0OHowMF8xMDE4LEJnTF9hdXh6MDBfNDI1OCxC Z0xfYXV4ejAwXzQyNjApOyB9IApyZXR1cm4gQmdMX3YxMDQ4ejAwXzEwMTg7fSAgZWxzZSAKeyAv KiBFdmFsL2V2Y29tcGlsZS5zY20gMzYxICovCm9ial90IEJnTF92MTA0OXowMF8xMDIxOwp7IApp bnQgQmdMX2F1eHowMF80MjYzOwpCZ0xfYXV4ejAwXzQyNjMgPSAKKGludCkoKChsb25nKTMpKTsg CkJnTF92MTA0OXowMF8xMDIxID0gCmNyZWF0ZV92ZWN0b3IoQmdMX2F1eHowMF80MjYzKTsgfSAK eyAKaW50IEJnTF9hdXh6MDBfNDI2NjsKQmdMX2F1eHowMF80MjY2ID0gCihpbnQpKCgobG9uZyky KSk7IApWRUNUT1JfU0VUKEJnTF92MTA0OXowMF8xMDIxLEJnTF9hdXh6MDBfNDI2NixCZ0xfYm9k eXowMF80MCk7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQyNjk7CkJnTF9hdXh6MDBfNDI2OSA9IAoo aW50KSgoKGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNDl6MDBfMTAyMSxCZ0xfYXV4ejAw XzQyNjksQmdMX2xvY3owMF80Myk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDI3NDtpbnQgQmdM X2F1eHowMF80MjcyOwpCZ0xfYXV4ejAwXzQyNzQgPSAKQklOVCgoKGxvbmcpNTMpKTsgCkJnTF9h dXh6MDBfNDI3MiA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNDl6MDBf MTAyMSxCZ0xfYXV4ejAwXzQyNzIsQmdMX2F1eHowMF80Mjc0KTsgfSAKcmV0dXJuIEJnTF92MTA0 OXowMF8xMDIxO30gfSB9IH0gfSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzNDUg Ki8KYm9vbF90IEJnTF90ZXN0ejAwXzQyNzc7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM0NSAq LwpvYmpfdCBCZ0xfYXV4ejAwXzQyNzg7CkJnTF9hdXh6MDBfNDI3OCA9IApDQVIoQmdMX2Zvcm1h bHN6MDBfMzkpOyAKQmdMX3Rlc3R6MDBfNDI3NyA9IApQQUlSUChCZ0xfYXV4ejAwXzQyNzgpOyB9 IAppZihCZ0xfdGVzdHowMF80Mjc3KQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzNDUgKi8KZ290 byBCZ0xfdGFnemQyMTk3MXpkMl85NDg7fSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20g MzQ1ICovCmlmKApDQk9PTChCZ0xfbmFtZWR6ZjN6ZjNfNDIpKQp7IC8qIEV2YWwvZXZjb21waWxl LnNjbSAzNTYgKi8Kb2JqX3QgQmdMX3YxMDQ2ejAwXzEwMTQ7CnsgCmludCBCZ0xfYXV4ejAwXzQy ODM7CkJnTF9hdXh6MDBfNDI4MyA9IAooaW50KSgoKGxvbmcpMykpOyAKQmdMX3YxMDQ2ejAwXzEw MTQgPSAKY3JlYXRlX3ZlY3RvcihCZ0xfYXV4ejAwXzQyODMpOyB9IAp7IC8qIEV2YWwvZXZjb21w aWxlLnNjbSAzNTYgKi8Kb2JqX3QgQmdMX2FyZzE2MDB6MDBfMTAxNjsKQmdMX2FyZzE2MDB6MDBf MTAxNiA9IApNQUtFX1BBSVIoQmdMX3doZXJlejAwXzQxLCBCZ0xfYm9keXowMF80MCk7IAp7IApp bnQgQmdMX2F1eHowMF80Mjg3OwpCZ0xfYXV4ejAwXzQyODcgPSAKKGludCkoKChsb25nKTIpKTsg ClZFQ1RPUl9TRVQoQmdMX3YxMDQ2ejAwXzEwMTQsQmdMX2F1eHowMF80Mjg3LEJnTF9hcmcxNjAw ejAwXzEwMTYpOyB9IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQyOTA7CkJnTF9hdXh6MDBfNDI5MCA9 IAooaW50KSgoKGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNDZ6MDBfMTAxNCxCZ0xfYXV4 ejAwXzQyOTAsQmdMX2xvY3owMF80Myk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDI5NTtpbnQg QmdMX2F1eHowMF80MjkzOwpCZ0xfYXV4ejAwXzQyOTUgPSAKQklOVCgoKGxvbmcpNDgpKTsgCkJn TF9hdXh6MDBfNDI5MyA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNDZ6 MDBfMTAxNCxCZ0xfYXV4ejAwXzQyOTMsQmdMX2F1eHowMF80Mjk1KTsgfSAKcmV0dXJuIEJnTF92 MTA0NnowMF8xMDE0O30gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM1NyAqLwpvYmpf dCBCZ0xfdjEwNDd6MDBfMTAxNzsKeyAKaW50IEJnTF9hdXh6MDBfNDI5ODsKQmdMX2F1eHowMF80 Mjk4ID0gCihpbnQpKCgobG9uZykzKSk7IApCZ0xfdjEwNDd6MDBfMTAxNyA9IApjcmVhdGVfdmVj dG9yKEJnTF9hdXh6MDBfNDI5OCk7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQzMDE7CkJnTF9hdXh6 MDBfNDMwMSA9IAooaW50KSgoKGxvbmcpMikpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNDd6MDBfMTAx NyxCZ0xfYXV4ejAwXzQzMDEsQmdMX2JvZHl6MDBfNDApOyB9IAp7IAppbnQgQmdMX2F1eHowMF80 MzA0OwpCZ0xfYXV4ejAwXzQzMDQgPSAKKGludCkoKChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdM X3YxMDQ3ejAwXzEwMTcsQmdMX2F1eHowMF80MzA0LEJnTF9sb2N6MDBfNDMpOyB9IAp7IApvYmpf dCBCZ0xfYXV4ejAwXzQzMDk7aW50IEJnTF9hdXh6MDBfNDMwNzsKQmdMX2F1eHowMF80MzA5ID0g CkJJTlQoKChsb25nKTUyKSk7IApCZ0xfYXV4ejAwXzQzMDcgPSAKKGludCkoKChsb25nKTApKTsg ClZFQ1RPUl9TRVQoQmdMX3YxMDQ3ejAwXzEwMTcsQmdMX2F1eHowMF80MzA3LEJnTF9hdXh6MDBf NDMwOSk7IH0gCnJldHVybiBCZ0xfdjEwNDd6MDBfMTAxNzt9IH0gfSB9IH0gIGVsc2UgCnsgLyog RXZhbC9ldmNvbXBpbGUuc2NtIDM0NSAqLwppZigKQ0JPT0woQmdMX25hbWVkemYzemYzXzQyKSkK eyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzUyICovCm9ial90IEJnTF92MTA0NHowMF8xMDEwOwp7 IAppbnQgQmdMX2F1eHowMF80MzE0OwpCZ0xfYXV4ejAwXzQzMTQgPSAKKGludCkoKChsb25nKTMp KTsgCkJnTF92MTA0NHowMF8xMDEwID0gCmNyZWF0ZV92ZWN0b3IoQmdMX2F1eHowMF80MzE0KTsg fSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzUyICovCm9ial90IEJnTF9hcmcxNTk4ejAwXzEw MTI7CkJnTF9hcmcxNTk4ejAwXzEwMTIgPSAKTUFLRV9QQUlSKEJnTF93aGVyZXowMF80MSwgQmdM X2JvZHl6MDBfNDApOyAKeyAKaW50IEJnTF9hdXh6MDBfNDMxODsKQmdMX2F1eHowMF80MzE4ID0g CihpbnQpKCgobG9uZykyKSk7IApWRUNUT1JfU0VUKEJnTF92MTA0NHowMF8xMDEwLEJnTF9hdXh6 MDBfNDMxOCxCZ0xfYXJnMTU5OHowMF8xMDEyKTsgfSB9IAp7IAppbnQgQmdMX2F1eHowMF80MzIx OwpCZ0xfYXV4ejAwXzQzMjEgPSAKKGludCkoKChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdMX3Yx MDQ0ejAwXzEwMTAsQmdMX2F1eHowMF80MzIxLEJnTF9sb2N6MDBfNDMpOyB9IAp7IApvYmpfdCBC Z0xfYXV4ejAwXzQzMjY7aW50IEJnTF9hdXh6MDBfNDMyNDsKQmdMX2F1eHowMF80MzI2ID0gCkJJ TlQoKChsb25nKTQ3KSk7IApCZ0xfYXV4ejAwXzQzMjQgPSAKKGludCkoKChsb25nKTApKTsgClZF Q1RPUl9TRVQoQmdMX3YxMDQ0ejAwXzEwMTAsQmdMX2F1eHowMF80MzI0LEJnTF9hdXh6MDBfNDMy Nik7IH0gCnJldHVybiBCZ0xfdjEwNDR6MDBfMTAxMDt9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21w aWxlLnNjbSAzNTMgKi8Kb2JqX3QgQmdMX3YxMDQ1ejAwXzEwMTM7CnsgCmludCBCZ0xfYXV4ejAw XzQzMjk7CkJnTF9hdXh6MDBfNDMyOSA9IAooaW50KSgoKGxvbmcpMykpOyAKQmdMX3YxMDQ1ejAw XzEwMTMgPSAKY3JlYXRlX3ZlY3RvcihCZ0xfYXV4ejAwXzQzMjkpOyB9IAp7IAppbnQgQmdMX2F1 eHowMF80MzMyOwpCZ0xfYXV4ejAwXzQzMzIgPSAKKGludCkoKChsb25nKTIpKTsgClZFQ1RPUl9T RVQoQmdMX3YxMDQ1ejAwXzEwMTMsQmdMX2F1eHowMF80MzMyLEJnTF9ib2R5ejAwXzQwKTsgfSAK eyAKaW50IEJnTF9hdXh6MDBfNDMzNTsKQmdMX2F1eHowMF80MzM1ID0gCihpbnQpKCgobG9uZykx KSk7IApWRUNUT1JfU0VUKEJnTF92MTA0NXowMF8xMDEzLEJnTF9hdXh6MDBfNDMzNSxCZ0xfbG9j ejAwXzQzKTsgfSAKeyAKb2JqX3QgQmdMX2F1eHowMF80MzQwO2ludCBCZ0xfYXV4ejAwXzQzMzg7 CkJnTF9hdXh6MDBfNDM0MCA9IApCSU5UKCgobG9uZyk1MSkpOyAKQmdMX2F1eHowMF80MzM4ID0g CihpbnQpKCgobG9uZykwKSk7IApWRUNUT1JfU0VUKEJnTF92MTA0NXowMF8xMDEzLEJnTF9hdXh6 MDBfNDMzOCxCZ0xfYXV4ejAwXzQzNDApOyB9IApyZXR1cm4gQmdMX3YxMDQ1ejAwXzEwMTM7fSB9 IH0gfSB9IAp9CgoKCi8qIGV2Y29tcGlsZS1nbG9iYWwtYXBwbGljYXRpb24gKi8Kb2JqX3QgQkds X2V2Y29tcGlsZXpkMmdsb2JhbHpkMmFwcGxpY2F0aW9uejAwenpfX2V2Y29tcGlsZXowMChvYmpf dCBCZ0xfcHJvY3owMF80NCwgb2JqX3QgQmdMX2FjdHVhbHN6MDBfNDUsIG9ial90IEJnTF9sb2N6 MDBfNDYpCnsgQU5fT0JKRUNUOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzNzQgKi8KeyAKCnN3 aXRjaCggCmJnbF9saXN0X2xlbmd0aChCZ0xfYWN0dWFsc3owMF80NSkpIHsgY2FzZSAoKGxvbmcp MCkgOiAKCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM3NyAqLwpvYmpfdCBCZ0xfdjEwNTl6MDBf MTAzNjsKeyAKaW50IEJnTF9hdXh6MDBfNDM0MzsKQmdMX2F1eHowMF80MzQzID0gCihpbnQpKCgo bG9uZykzKSk7IApCZ0xfdjEwNTl6MDBfMTAzNiA9IApjcmVhdGVfdmVjdG9yKEJnTF9hdXh6MDBf NDM0Myk7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM3NyAqLwpvYmpfdCBCZ0xfYXJnMTYx MXowMF8xMDM4Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzNzkgKi8Kb2JqX3QgQmdMX3YxMDYw ejAwXzEwMzk7CnsgCmludCBCZ0xfYXV4ejAwXzQzNDY7CkJnTF9hdXh6MDBfNDM0NiA9IAooaW50 KSgoKGxvbmcpMikpOyAKQmdMX3YxMDYwejAwXzEwMzkgPSAKY3JlYXRlX3ZlY3RvcihCZ0xfYXV4 ejAwXzQzNDYpOyB9IAp7IAppbnQgQmdMX2F1eHowMF80MzQ5OwpCZ0xfYXV4ejAwXzQzNDkgPSAK KGludCkoKChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDYwejAwXzEwMzksQmdMX2F1eHow MF80MzQ5LEJnTF9wcm9jejAwXzQ0KTsgfSAKeyAKb2JqX3QgQmdMX2F1eHowMF80MzU0O2ludCBC Z0xfYXV4ejAwXzQzNTI7CnsgCmludCBCZ0xfYXV4ejAwXzQzNTU7CkJnTF9hdXh6MDBfNDM1NSA9 IAooaW50KSgoKGxvbmcpMSkpOyAKQmdMX2F1eHowMF80MzU0ID0gClZFQ1RPUl9SRUYoQmdMX3By b2N6MDBfNDQsQmdMX2F1eHowMF80MzU1KTsgfSAKQmdMX2F1eHowMF80MzUyID0gCihpbnQpKCgo bG9uZykwKSk7IApWRUNUT1JfU0VUKEJnTF92MTA2MHowMF8xMDM5LEJnTF9hdXh6MDBfNDM1MixC Z0xfYXV4ejAwXzQzNTQpOyB9IApCZ0xfYXJnMTYxMXowMF8xMDM4ID0gQmdMX3YxMDYwejAwXzEw Mzk7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQzNTk7CkJnTF9hdXh6MDBfNDM1OSA9IAooaW50KSgo KGxvbmcpMikpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNTl6MDBfMTAzNixCZ0xfYXV4ejAwXzQzNTks QmdMX2FyZzE2MTF6MDBfMTAzOCk7IH0gfSAKeyAKaW50IEJnTF9hdXh6MDBfNDM2MjsKQmdMX2F1 eHowMF80MzYyID0gCihpbnQpKCgobG9uZykxKSk7IApWRUNUT1JfU0VUKEJnTF92MTA1OXowMF8x MDM2LEJnTF9hdXh6MDBfNDM2MixCZ0xfbG9jejAwXzQ2KTsgfSAKeyAvKiBFdmFsL2V2Y29tcGls ZS5zY20gMzc3ICovCmxvbmcgQmdMX2FyZzE2MTV6MDBfMTA0MzsKeyAvKiBFdmFsL2V2Y29tcGls ZS5zY20gMzc3ICovCmJvb2xfdCBCZ0xfdGVzdHowMF80MzY1Owp7IC8qIEV2YWwvZXZjb21waWxl LnNjbSAzNzcgKi8Kb2JqX3QgQmdMX2F1eHowMF80MzcwO29ial90IEJnTF9hdXh6MDBfNDM2NjsK QmdMX2F1eHowMF80MzcwID0gCkJJTlQoKChsb25nKTEpKTsgCnsgCmludCBCZ0xfYXV4ejAwXzQz Njc7CkJnTF9hdXh6MDBfNDM2NyA9IAooaW50KSgoKGxvbmcpMCkpOyAKQmdMX2F1eHowMF80MzY2 ID0gClZFQ1RPUl9SRUYoQmdMX3Byb2N6MDBfNDQsQmdMX2F1eHowMF80MzY3KTsgfSAKQmdMX3Rl c3R6MDBfNDM2NSA9IAooQmdMX2F1eHowMF80MzY2PT1CZ0xfYXV4ejAwXzQzNzApOyB9IAppZihC Z0xfdGVzdHowMF80MzY1KQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzNzcgKi8KQmdMX2FyZzE2 MTV6MDBfMTA0MyA9ICgobG9uZykxOSk7IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2Nt IDM3NyAqLwpCZ0xfYXJnMTYxNXowMF8xMDQzID0gKChsb25nKTU3KTsgfSB9IAp7IApvYmpfdCBC Z0xfYXV4ejAwXzQzNzU7aW50IEJnTF9hdXh6MDBfNDM3MzsKQmdMX2F1eHowMF80Mzc1ID0gCkJJ TlQoQmdMX2FyZzE2MTV6MDBfMTA0Myk7IApCZ0xfYXV4ejAwXzQzNzMgPSAKKGludCkoKChsb25n KTApKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDU5ejAwXzEwMzYsQmdMX2F1eHowMF80MzczLEJnTF9h dXh6MDBfNDM3NSk7IH0gfSAKcmV0dXJuIEJnTF92MTA1OXowMF8xMDM2O30gYnJlYWs7Y2FzZSAo KGxvbmcpMSkgOiAKCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM4MiAqLwpvYmpfdCBCZ0xfdjEw NjF6MDBfMTA0NzsKeyAKaW50IEJnTF9hdXh6MDBfNDM3ODsKQmdMX2F1eHowMF80Mzc4ID0gCihp bnQpKCgobG9uZykzKSk7IApCZ0xfdjEwNjF6MDBfMTA0NyA9IApjcmVhdGVfdmVjdG9yKEJnTF9h dXh6MDBfNDM3OCk7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM4MiAqLwpvYmpfdCBCZ0xf YXJnMTYyMHowMF8xMDQ5Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzODQgKi8Kb2JqX3QgQmdM X3YxMDYyejAwXzEwNTA7CnsgCmludCBCZ0xfYXV4ejAwXzQzODE7CkJnTF9hdXh6MDBfNDM4MSA9 IAooaW50KSgoKGxvbmcpMykpOyAKQmdMX3YxMDYyejAwXzEwNTAgPSAKY3JlYXRlX3ZlY3RvcihC Z0xfYXV4ejAwXzQzODEpOyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzQzODY7aW50IEJnTF9hdXh6 MDBfNDM4NDsKQmdMX2F1eHowMF80Mzg2ID0gCkNBUihCZ0xfYWN0dWFsc3owMF80NSk7IApCZ0xf YXV4ejAwXzQzODQgPSAKKGludCkoKChsb25nKTIpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDYyejAw XzEwNTAsQmdMX2F1eHowMF80Mzg0LEJnTF9hdXh6MDBfNDM4Nik7IH0gCnsgCmludCBCZ0xfYXV4 ejAwXzQzODk7CkJnTF9hdXh6MDBfNDM4OSA9IAooaW50KSgoKGxvbmcpMSkpOyAKVkVDVE9SX1NF VChCZ0xfdjEwNjJ6MDBfMTA1MCxCZ0xfYXV4ejAwXzQzODksQmdMX3Byb2N6MDBfNDQpOyB9IAp7 IApvYmpfdCBCZ0xfYXV4ejAwXzQzOTQ7aW50IEJnTF9hdXh6MDBfNDM5MjsKeyAKaW50IEJnTF9h dXh6MDBfNDM5NTsKQmdMX2F1eHowMF80Mzk1ID0gCihpbnQpKCgobG9uZykxKSk7IApCZ0xfYXV4 ejAwXzQzOTQgPSAKVkVDVE9SX1JFRihCZ0xfcHJvY3owMF80NCxCZ0xfYXV4ejAwXzQzOTUpOyB9 IApCZ0xfYXV4ejAwXzQzOTIgPSAKKGludCkoKChsb25nKTApKTsgClZFQ1RPUl9TRVQoQmdMX3Yx MDYyejAwXzEwNTAsQmdMX2F1eHowMF80MzkyLEJnTF9hdXh6MDBfNDM5NCk7IH0gCkJnTF9hcmcx NjIwejAwXzEwNDkgPSBCZ0xfdjEwNjJ6MDBfMTA1MDsgfSAKeyAKaW50IEJnTF9hdXh6MDBfNDM5 OTsKQmdMX2F1eHowMF80Mzk5ID0gCihpbnQpKCgobG9uZykyKSk7IApWRUNUT1JfU0VUKEJnTF92 MTA2MXowMF8xMDQ3LEJnTF9hdXh6MDBfNDM5OSxCZ0xfYXJnMTYyMHowMF8xMDQ5KTsgfSB9IAp7 IAppbnQgQmdMX2F1eHowMF80NDAyOwpCZ0xfYXV4ejAwXzQ0MDIgPSAKKGludCkoKChsb25nKTEp KTsgClZFQ1RPUl9TRVQoQmdMX3YxMDYxejAwXzEwNDcsQmdMX2F1eHowMF80NDAyLEJnTF9sb2N6 MDBfNDYpOyB9IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzODIgKi8KbG9uZyBCZ0xfYXJnMTYy NnowMF8xMDU2Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzODIgKi8KYm9vbF90IEJnTF90ZXN0 ejAwXzQ0MDU7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM4MiAqLwpvYmpfdCBCZ0xfYXV4ejAw XzQ0MTA7b2JqX3QgQmdMX2F1eHowMF80NDA2OwpCZ0xfYXV4ejAwXzQ0MTAgPSAKQklOVCgoKGxv bmcpMSkpOyAKeyAKaW50IEJnTF9hdXh6MDBfNDQwNzsKQmdMX2F1eHowMF80NDA3ID0gCihpbnQp KCgobG9uZykwKSk7IApCZ0xfYXV4ejAwXzQ0MDYgPSAKVkVDVE9SX1JFRihCZ0xfcHJvY3owMF80 NCxCZ0xfYXV4ejAwXzQ0MDcpOyB9IApCZ0xfdGVzdHowMF80NDA1ID0gCihCZ0xfYXV4ejAwXzQ0 MDY9PUJnTF9hdXh6MDBfNDQxMCk7IH0gCmlmKEJnTF90ZXN0ejAwXzQ0MDUpCnsgLyogRXZhbC9l dmNvbXBpbGUuc2NtIDM4MiAqLwpCZ0xfYXJnMTYyNnowMF8xMDU2ID0gKChsb25nKTIwKTsgfSAg ZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzgyICovCkJnTF9hcmcxNjI2ejAwXzEwNTYg PSAoKGxvbmcpNTgpOyB9IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDQxNTtpbnQgQmdMX2F1eHow MF80NDEzOwpCZ0xfYXV4ejAwXzQ0MTUgPSAKQklOVChCZ0xfYXJnMTYyNnowMF8xMDU2KTsgCkJn TF9hdXh6MDBfNDQxMyA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNjF6 MDBfMTA0NyxCZ0xfYXV4ejAwXzQ0MTMsQmdMX2F1eHowMF80NDE1KTsgfSB9IApyZXR1cm4gQmdM X3YxMDYxejAwXzEwNDc7fSBicmVhaztjYXNlICgobG9uZykyKSA6IAoKeyAvKiBFdmFsL2V2Y29t cGlsZS5zY20gMzg4ICovCm9ial90IEJnTF92MTA2M3owMF8xMDYwOwp7IAppbnQgQmdMX2F1eHow MF80NDE4OwpCZ0xfYXV4ejAwXzQ0MTggPSAKKGludCkoKChsb25nKTMpKTsgCkJnTF92MTA2M3ow MF8xMDYwID0gCmNyZWF0ZV92ZWN0b3IoQmdMX2F1eHowMF80NDE4KTsgfSAKeyAvKiBFdmFsL2V2 Y29tcGlsZS5zY20gMzg4ICovCm9ial90IEJnTF9hcmcxNjMxejAwXzEwNjI7CnsgLyogRXZhbC9l dmNvbXBpbGUuc2NtIDM5MCAqLwpvYmpfdCBCZ0xfdjEwNjR6MDBfMTA2MzsKeyAKaW50IEJnTF9h dXh6MDBfNDQyMTsKQmdMX2F1eHowMF80NDIxID0gCihpbnQpKCgobG9uZyk0KSk7IApCZ0xfdjEw NjR6MDBfMTA2MyA9IApjcmVhdGVfdmVjdG9yKEJnTF9hdXh6MDBfNDQyMSk7IH0gCnsgCm9ial90 IEJnTF9hdXh6MDBfNDQyNjtpbnQgQmdMX2F1eHowMF80NDI0Owp7IC8qIEV2YWwvZXZjb21waWxl LnNjbSAzOTMgKi8Kb2JqX3QgQmdMX2F1eHowMF80NDI3OwpCZ0xfYXV4ejAwXzQ0MjcgPSAKQ0RS KEJnTF9hY3R1YWxzejAwXzQ1KTsgCkJnTF9hdXh6MDBfNDQyNiA9IApDQVIoQmdMX2F1eHowMF80 NDI3KTsgfSAKQmdMX2F1eHowMF80NDI0ID0gCihpbnQpKCgobG9uZykzKSk7IApWRUNUT1JfU0VU KEJnTF92MTA2NHowMF8xMDYzLEJnTF9hdXh6MDBfNDQyNCxCZ0xfYXV4ejAwXzQ0MjYpOyB9IAp7 IApvYmpfdCBCZ0xfYXV4ejAwXzQ0MzM7aW50IEJnTF9hdXh6MDBfNDQzMTsKQmdMX2F1eHowMF80 NDMzID0gCkNBUihCZ0xfYWN0dWFsc3owMF80NSk7IApCZ0xfYXV4ejAwXzQ0MzEgPSAKKGludCko KChsb25nKTIpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDY0ejAwXzEwNjMsQmdMX2F1eHowMF80NDMx LEJnTF9hdXh6MDBfNDQzMyk7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQ0MzY7CkJnTF9hdXh6MDBf NDQzNiA9IAooaW50KSgoKGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNjR6MDBfMTA2MyxC Z0xfYXV4ejAwXzQ0MzYsQmdMX3Byb2N6MDBfNDQpOyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzQ0 NDE7aW50IEJnTF9hdXh6MDBfNDQzOTsKeyAKaW50IEJnTF9hdXh6MDBfNDQ0MjsKQmdMX2F1eHow MF80NDQyID0gCihpbnQpKCgobG9uZykxKSk7IApCZ0xfYXV4ejAwXzQ0NDEgPSAKVkVDVE9SX1JF RihCZ0xfcHJvY3owMF80NCxCZ0xfYXV4ejAwXzQ0NDIpOyB9IApCZ0xfYXV4ejAwXzQ0MzkgPSAK KGludCkoKChsb25nKTApKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDY0ejAwXzEwNjMsQmdMX2F1eHow MF80NDM5LEJnTF9hdXh6MDBfNDQ0MSk7IH0gCkJnTF9hcmcxNjMxejAwXzEwNjIgPSBCZ0xfdjEw NjR6MDBfMTA2MzsgfSAKeyAKaW50IEJnTF9hdXh6MDBfNDQ0NjsKQmdMX2F1eHowMF80NDQ2ID0g CihpbnQpKCgobG9uZykyKSk7IApWRUNUT1JfU0VUKEJnTF92MTA2M3owMF8xMDYwLEJnTF9hdXh6 MDBfNDQ0NixCZ0xfYXJnMTYzMXowMF8xMDYyKTsgfSB9IAp7IAppbnQgQmdMX2F1eHowMF80NDQ5 OwpCZ0xfYXV4ejAwXzQ0NDkgPSAKKGludCkoKChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdMX3Yx MDYzejAwXzEwNjAsQmdMX2F1eHowMF80NDQ5LEJnTF9sb2N6MDBfNDYpOyB9IAp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSAzODggKi8KbG9uZyBCZ0xfYXJnMTYzOXowMF8xMDcxOwp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSAzODggKi8KYm9vbF90IEJnTF90ZXN0ejAwXzQ0NTI7CnsgLyogRXZhbC9l dmNvbXBpbGUuc2NtIDM4OCAqLwpvYmpfdCBCZ0xfYXV4ejAwXzQ0NTc7b2JqX3QgQmdMX2F1eHow MF80NDUzOwpCZ0xfYXV4ejAwXzQ0NTcgPSAKQklOVCgoKGxvbmcpMSkpOyAKeyAKaW50IEJnTF9h dXh6MDBfNDQ1NDsKQmdMX2F1eHowMF80NDU0ID0gCihpbnQpKCgobG9uZykwKSk7IApCZ0xfYXV4 ejAwXzQ0NTMgPSAKVkVDVE9SX1JFRihCZ0xfcHJvY3owMF80NCxCZ0xfYXV4ejAwXzQ0NTQpOyB9 IApCZ0xfdGVzdHowMF80NDUyID0gCihCZ0xfYXV4ejAwXzQ0NTM9PUJnTF9hdXh6MDBfNDQ1Nyk7 IH0gCmlmKEJnTF90ZXN0ejAwXzQ0NTIpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM4OCAqLwpC Z0xfYXJnMTYzOXowMF8xMDcxID0gKChsb25nKTIxKTsgfSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29t cGlsZS5zY20gMzg4ICovCkJnTF9hcmcxNjM5ejAwXzEwNzEgPSAoKGxvbmcpNTkpOyB9IH0gCnsg Cm9ial90IEJnTF9hdXh6MDBfNDQ2MjtpbnQgQmdMX2F1eHowMF80NDYwOwpCZ0xfYXV4ejAwXzQ0 NjIgPSAKQklOVChCZ0xfYXJnMTYzOXowMF8xMDcxKTsgCkJnTF9hdXh6MDBfNDQ2MCA9IAooaW50 KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNjN6MDBfMTA2MCxCZ0xfYXV4ejAwXzQ0 NjAsQmdMX2F1eHowMF80NDYyKTsgfSB9IApyZXR1cm4gQmdMX3YxMDYzejAwXzEwNjA7fSBicmVh aztjYXNlICgobG9uZykzKSA6IAoKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzk1ICovCm9ial90 IEJnTF92MTA2NXowMF8xMDc1Owp7IAppbnQgQmdMX2F1eHowMF80NDY1OwpCZ0xfYXV4ejAwXzQ0 NjUgPSAKKGludCkoKChsb25nKTMpKTsgCkJnTF92MTA2NXowMF8xMDc1ID0gCmNyZWF0ZV92ZWN0 b3IoQmdMX2F1eHowMF80NDY1KTsgfSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzk1ICovCm9i al90IEJnTF9hcmcxNjQ0ejAwXzEwNzc7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM5NyAqLwpv YmpfdCBCZ0xfdjEwNjZ6MDBfMTA3ODsKeyAKaW50IEJnTF9hdXh6MDBfNDQ2ODsKQmdMX2F1eHow MF80NDY4ID0gCihpbnQpKCgobG9uZyk1KSk7IApCZ0xfdjEwNjZ6MDBfMTA3OCA9IApjcmVhdGVf dmVjdG9yKEJnTF9hdXh6MDBfNDQ2OCk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDQ3MztpbnQg QmdMX2F1eHowMF80NDcxOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0MDEgKi8Kb2JqX3QgQmdM X2F1eHowMF80NDc0Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0MDEgKi8Kb2JqX3QgQmdMX2F1 eHowMF80NDc1OwpCZ0xfYXV4ejAwXzQ0NzUgPSAKQ0RSKEJnTF9hY3R1YWxzejAwXzQ1KTsgCkJn TF9hdXh6MDBfNDQ3NCA9IApDRFIoQmdMX2F1eHowMF80NDc1KTsgfSAKQmdMX2F1eHowMF80NDcz ID0gCkNBUihCZ0xfYXV4ejAwXzQ0NzQpOyB9IApCZ0xfYXV4ejAwXzQ0NzEgPSAKKGludCkoKChs b25nKTQpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDY2ejAwXzEwNzgsQmdMX2F1eHowMF80NDcxLEJn TF9hdXh6MDBfNDQ3Myk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDQ4MjtpbnQgQmdMX2F1eHow MF80NDgwOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0MDAgKi8Kb2JqX3QgQmdMX2F1eHowMF80 NDgzOwpCZ0xfYXV4ejAwXzQ0ODMgPSAKQ0RSKEJnTF9hY3R1YWxzejAwXzQ1KTsgCkJnTF9hdXh6 MDBfNDQ4MiA9IApDQVIoQmdMX2F1eHowMF80NDgzKTsgfSAKQmdMX2F1eHowMF80NDgwID0gCihp bnQpKCgobG9uZykzKSk7IApWRUNUT1JfU0VUKEJnTF92MTA2NnowMF8xMDc4LEJnTF9hdXh6MDBf NDQ4MCxCZ0xfYXV4ejAwXzQ0ODIpOyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzQ0ODk7aW50IEJn TF9hdXh6MDBfNDQ4NzsKQmdMX2F1eHowMF80NDg5ID0gCkNBUihCZ0xfYWN0dWFsc3owMF80NSk7 IApCZ0xfYXV4ejAwXzQ0ODcgPSAKKGludCkoKChsb25nKTIpKTsgClZFQ1RPUl9TRVQoQmdMX3Yx MDY2ejAwXzEwNzgsQmdMX2F1eHowMF80NDg3LEJnTF9hdXh6MDBfNDQ4OSk7IH0gCnsgCmludCBC Z0xfYXV4ejAwXzQ0OTI7CkJnTF9hdXh6MDBfNDQ5MiA9IAooaW50KSgoKGxvbmcpMSkpOyAKVkVD VE9SX1NFVChCZ0xfdjEwNjZ6MDBfMTA3OCxCZ0xfYXV4ejAwXzQ0OTIsQmdMX3Byb2N6MDBfNDQp OyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzQ0OTc7aW50IEJnTF9hdXh6MDBfNDQ5NTsKeyAKaW50 IEJnTF9hdXh6MDBfNDQ5ODsKQmdMX2F1eHowMF80NDk4ID0gCihpbnQpKCgobG9uZykxKSk7IApC Z0xfYXV4ejAwXzQ0OTcgPSAKVkVDVE9SX1JFRihCZ0xfcHJvY3owMF80NCxCZ0xfYXV4ejAwXzQ0 OTgpOyB9IApCZ0xfYXV4ejAwXzQ0OTUgPSAKKGludCkoKChsb25nKTApKTsgClZFQ1RPUl9TRVQo QmdMX3YxMDY2ejAwXzEwNzgsQmdMX2F1eHowMF80NDk1LEJnTF9hdXh6MDBfNDQ5Nyk7IH0gCkJn TF9hcmcxNjQ0ejAwXzEwNzcgPSBCZ0xfdjEwNjZ6MDBfMTA3ODsgfSAKeyAKaW50IEJnTF9hdXh6 MDBfNDUwMjsKQmdMX2F1eHowMF80NTAyID0gCihpbnQpKCgobG9uZykyKSk7IApWRUNUT1JfU0VU KEJnTF92MTA2NXowMF8xMDc1LEJnTF9hdXh6MDBfNDUwMixCZ0xfYXJnMTY0NHowMF8xMDc3KTsg fSB9IAp7IAppbnQgQmdMX2F1eHowMF80NTA1OwpCZ0xfYXV4ejAwXzQ1MDUgPSAKKGludCkoKChs b25nKTEpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDY1ejAwXzEwNzUsQmdMX2F1eHowMF80NTA1LEJn TF9sb2N6MDBfNDYpOyB9IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzOTUgKi8KbG9uZyBCZ0xf YXJnMTY1NHowMF8xMDg4Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSAzOTUgKi8KYm9vbF90IEJn TF90ZXN0ejAwXzQ1MDg7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDM5NSAqLwpvYmpfdCBCZ0xf YXV4ejAwXzQ1MTM7b2JqX3QgQmdMX2F1eHowMF80NTA5OwpCZ0xfYXV4ejAwXzQ1MTMgPSAKQklO VCgoKGxvbmcpMSkpOyAKeyAKaW50IEJnTF9hdXh6MDBfNDUxMDsKQmdMX2F1eHowMF80NTEwID0g CihpbnQpKCgobG9uZykwKSk7IApCZ0xfYXV4ejAwXzQ1MDkgPSAKVkVDVE9SX1JFRihCZ0xfcHJv Y3owMF80NCxCZ0xfYXV4ejAwXzQ1MTApOyB9IApCZ0xfdGVzdHowMF80NTA4ID0gCihCZ0xfYXV4 ejAwXzQ1MDk9PUJnTF9hdXh6MDBfNDUxMyk7IH0gCmlmKEJnTF90ZXN0ejAwXzQ1MDgpCnsgLyog RXZhbC9ldmNvbXBpbGUuc2NtIDM5NSAqLwpCZ0xfYXJnMTY1NHowMF8xMDg4ID0gKChsb25nKTIy KTsgfSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gMzk1ICovCkJnTF9hcmcxNjU0ejAw XzEwODggPSAoKGxvbmcpNjApOyB9IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDUxODtpbnQgQmdM X2F1eHowMF80NTE2OwpCZ0xfYXV4ejAwXzQ1MTggPSAKQklOVChCZ0xfYXJnMTY1NHowMF8xMDg4 KTsgCkJnTF9hdXh6MDBfNDUxNiA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xf djEwNjV6MDBfMTA3NSxCZ0xfYXV4ejAwXzQ1MTYsQmdMX2F1eHowMF80NTE4KTsgfSB9IApyZXR1 cm4gQmdMX3YxMDY1ejAwXzEwNzU7fSBicmVhaztjYXNlICgobG9uZyk0KSA6IAoKeyAvKiBFdmFs L2V2Y29tcGlsZS5zY20gNDAzICovCm9ial90IEJnTF92MTA2N3owMF8xMDkyOwp7IAppbnQgQmdM X2F1eHowMF80NTIxOwpCZ0xfYXV4ejAwXzQ1MjEgPSAKKGludCkoKChsb25nKTMpKTsgCkJnTF92 MTA2N3owMF8xMDkyID0gCmNyZWF0ZV92ZWN0b3IoQmdMX2F1eHowMF80NTIxKTsgfSAKeyAvKiBF dmFsL2V2Y29tcGlsZS5zY20gNDAzICovCm9ial90IEJnTF9hcmcxNjU5ejAwXzEwOTQ7CnsgLyog RXZhbC9ldmNvbXBpbGUuc2NtIDQwNSAqLwpvYmpfdCBCZ0xfdjEwNjh6MDBfMTA5NTsKeyAKaW50 IEJnTF9hdXh6MDBfNDUyNDsKQmdMX2F1eHowMF80NTI0ID0gCihpbnQpKCgobG9uZyk2KSk7IApC Z0xfdjEwNjh6MDBfMTA5NSA9IApjcmVhdGVfdmVjdG9yKEJnTF9hdXh6MDBfNDUyNCk7IH0gCnsg Cm9ial90IEJnTF9hdXh6MDBfNDUyOTtpbnQgQmdMX2F1eHowMF80NTI3Owp7IC8qIEV2YWwvZXZj b21waWxlLnNjbSA0MTAgKi8Kb2JqX3QgQmdMX2F1eHowMF80NTMwOwp7IC8qIEV2YWwvZXZjb21w aWxlLnNjbSA0MTAgKi8Kb2JqX3QgQmdMX2F1eHowMF80NTMxOwp7IC8qIEV2YWwvZXZjb21waWxl LnNjbSA0MTAgKi8Kb2JqX3QgQmdMX2F1eHowMF80NTMyOwpCZ0xfYXV4ejAwXzQ1MzIgPSAKQ0RS KEJnTF9hY3R1YWxzejAwXzQ1KTsgCkJnTF9hdXh6MDBfNDUzMSA9IApDRFIoQmdMX2F1eHowMF80 NTMyKTsgfSAKQmdMX2F1eHowMF80NTMwID0gCkNEUihCZ0xfYXV4ejAwXzQ1MzEpOyB9IApCZ0xf YXV4ejAwXzQ1MjkgPSAKQ0FSKEJnTF9hdXh6MDBfNDUzMCk7IH0gCkJnTF9hdXh6MDBfNDUyNyA9 IAooaW50KSgoKGxvbmcpNSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNjh6MDBfMTA5NSxCZ0xfYXV4 ejAwXzQ1MjcsQmdMX2F1eHowMF80NTI5KTsgfSAKeyAKb2JqX3QgQmdMX2F1eHowMF80NTQwO2lu dCBCZ0xfYXV4ejAwXzQ1Mzg7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDQwOSAqLwpvYmpfdCBC Z0xfYXV4ejAwXzQ1NDE7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDQwOSAqLwpvYmpfdCBCZ0xf YXV4ejAwXzQ1NDI7CkJnTF9hdXh6MDBfNDU0MiA9IApDRFIoQmdMX2FjdHVhbHN6MDBfNDUpOyAK QmdMX2F1eHowMF80NTQxID0gCkNEUihCZ0xfYXV4ejAwXzQ1NDIpOyB9IApCZ0xfYXV4ejAwXzQ1 NDAgPSAKQ0FSKEJnTF9hdXh6MDBfNDU0MSk7IH0gCkJnTF9hdXh6MDBfNDUzOCA9IAooaW50KSgo KGxvbmcpNCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNjh6MDBfMTA5NSxCZ0xfYXV4ejAwXzQ1Mzgs QmdMX2F1eHowMF80NTQwKTsgfSAKeyAKb2JqX3QgQmdMX2F1eHowMF80NTQ5O2ludCBCZ0xfYXV4 ejAwXzQ1NDc7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDQwOCAqLwpvYmpfdCBCZ0xfYXV4ejAw XzQ1NTA7CkJnTF9hdXh6MDBfNDU1MCA9IApDRFIoQmdMX2FjdHVhbHN6MDBfNDUpOyAKQmdMX2F1 eHowMF80NTQ5ID0gCkNBUihCZ0xfYXV4ejAwXzQ1NTApOyB9IApCZ0xfYXV4ejAwXzQ1NDcgPSAK KGludCkoKChsb25nKTMpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDY4ejAwXzEwOTUsQmdMX2F1eHow MF80NTQ3LEJnTF9hdXh6MDBfNDU0OSk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDU1NjtpbnQg QmdMX2F1eHowMF80NTU0OwpCZ0xfYXV4ejAwXzQ1NTYgPSAKQ0FSKEJnTF9hY3R1YWxzejAwXzQ1 KTsgCkJnTF9hdXh6MDBfNDU1NCA9IAooaW50KSgoKGxvbmcpMikpOyAKVkVDVE9SX1NFVChCZ0xf djEwNjh6MDBfMTA5NSxCZ0xfYXV4ejAwXzQ1NTQsQmdMX2F1eHowMF80NTU2KTsgfSAKeyAKaW50 IEJnTF9hdXh6MDBfNDU1OTsKQmdMX2F1eHowMF80NTU5ID0gCihpbnQpKCgobG9uZykxKSk7IApW RUNUT1JfU0VUKEJnTF92MTA2OHowMF8xMDk1LEJnTF9hdXh6MDBfNDU1OSxCZ0xfcHJvY3owMF80 NCk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDU2NDtpbnQgQmdMX2F1eHowMF80NTYyOwp7IApp bnQgQmdMX2F1eHowMF80NTY1OwpCZ0xfYXV4ejAwXzQ1NjUgPSAKKGludCkoKChsb25nKTEpKTsg CkJnTF9hdXh6MDBfNDU2NCA9IApWRUNUT1JfUkVGKEJnTF9wcm9jejAwXzQ0LEJnTF9hdXh6MDBf NDU2NSk7IH0gCkJnTF9hdXh6MDBfNDU2MiA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NF VChCZ0xfdjEwNjh6MDBfMTA5NSxCZ0xfYXV4ejAwXzQ1NjIsQmdMX2F1eHowMF80NTY0KTsgfSAK QmdMX2FyZzE2NTl6MDBfMTA5NCA9IEJnTF92MTA2OHowMF8xMDk1OyB9IAp7IAppbnQgQmdMX2F1 eHowMF80NTY5OwpCZ0xfYXV4ejAwXzQ1NjkgPSAKKGludCkoKChsb25nKTIpKTsgClZFQ1RPUl9T RVQoQmdMX3YxMDY3ejAwXzEwOTIsQmdMX2F1eHowMF80NTY5LEJnTF9hcmcxNjU5ejAwXzEwOTQp OyB9IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQ1NzI7CkJnTF9hdXh6MDBfNDU3MiA9IAooaW50KSgo KGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNjd6MDBfMTA5MixCZ0xfYXV4ejAwXzQ1NzIs QmdMX2xvY3owMF80Nik7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDQwMyAqLwpsb25nIEJn TF9hcmcxNjc0ejAwXzExMDc7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDQwMyAqLwpib29sX3Qg QmdMX3Rlc3R6MDBfNDU3NTsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNDAzICovCm9ial90IEJn TF9hdXh6MDBfNDU4MDtvYmpfdCBCZ0xfYXV4ejAwXzQ1NzY7CkJnTF9hdXh6MDBfNDU4MCA9IApC SU5UKCgobG9uZykxKSk7IAp7IAppbnQgQmdMX2F1eHowMF80NTc3OwpCZ0xfYXV4ejAwXzQ1Nzcg PSAKKGludCkoKChsb25nKTApKTsgCkJnTF9hdXh6MDBfNDU3NiA9IApWRUNUT1JfUkVGKEJnTF9w cm9jejAwXzQ0LEJnTF9hdXh6MDBfNDU3Nyk7IH0gCkJnTF90ZXN0ejAwXzQ1NzUgPSAKKEJnTF9h dXh6MDBfNDU3Nj09QmdMX2F1eHowMF80NTgwKTsgfSAKaWYoQmdMX3Rlc3R6MDBfNDU3NSkKeyAv KiBFdmFsL2V2Y29tcGlsZS5zY20gNDAzICovCkJnTF9hcmcxNjc0ejAwXzExMDcgPSAoKGxvbmcp MjMpOyB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0MDMgKi8KQmdMX2FyZzE2NzR6 MDBfMTEwNyA9ICgobG9uZyk2MSk7IH0gfSAKeyAKb2JqX3QgQmdMX2F1eHowMF80NTg1O2ludCBC Z0xfYXV4ejAwXzQ1ODM7CkJnTF9hdXh6MDBfNDU4NSA9IApCSU5UKEJnTF9hcmcxNjc0ejAwXzEx MDcpOyAKQmdMX2F1eHowMF80NTgzID0gCihpbnQpKCgobG9uZykwKSk7IApWRUNUT1JfU0VUKEJn TF92MTA2N3owMF8xMDkyLEJnTF9hdXh6MDBfNDU4MyxCZ0xfYXV4ejAwXzQ1ODUpOyB9IH0gCnJl dHVybiBCZ0xfdjEwNjd6MDBfMTA5Mjt9IGJyZWFrOwpkZWZhdWx0OiAKeyAvKiBFdmFsL2V2Y29t cGlsZS5zY20gNDEyICovCm9ial90IEJnTF92MTA1NXowMF8xMTExOwp7IAppbnQgQmdMX2F1eHow MF80NTg4OwpCZ0xfYXV4ejAwXzQ1ODggPSAKKGludCkoKChsb25nKTMpKTsgCkJnTF92MTA1NXow MF8xMTExID0gCmNyZWF0ZV92ZWN0b3IoQmdMX2F1eHowMF80NTg4KTsgfSAKeyAvKiBFdmFsL2V2 Y29tcGlsZS5zY20gNDEyICovCm9ial90IEJnTF9hcmcxNjc5ejAwXzExMTM7CnsgLyogRXZhbC9l dmNvbXBpbGUuc2NtIDQxNCAqLwpvYmpfdCBCZ0xfdjEwNTZ6MDBfMTExNDsKeyAKaW50IEJnTF9h dXh6MDBfNDU5MTsKQmdMX2F1eHowMF80NTkxID0gCihpbnQpKCgobG9uZykzKSk7IApCZ0xfdjEw NTZ6MDBfMTExNCA9IApjcmVhdGVfdmVjdG9yKEJnTF9hdXh6MDBfNDU5MSk7IH0gCnsgCmludCBC Z0xfYXV4ejAwXzQ1OTQ7CkJnTF9hdXh6MDBfNDU5NCA9IAooaW50KSgoKGxvbmcpMikpOyAKVkVD VE9SX1NFVChCZ0xfdjEwNTZ6MDBfMTExNCxCZ0xfYXV4ejAwXzQ1OTQsQmdMX2FjdHVhbHN6MDBf NDUpOyB9IAp7IAppbnQgQmdMX2F1eHowMF80NTk3OwpCZ0xfYXV4ejAwXzQ1OTcgPSAKKGludCko KChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDU2ejAwXzExMTQsQmdMX2F1eHowMF80NTk3 LEJnTF9wcm9jejAwXzQ0KTsgfSAKeyAKb2JqX3QgQmdMX2F1eHowMF80NjAyO2ludCBCZ0xfYXV4 ejAwXzQ2MDA7CnsgCmludCBCZ0xfYXV4ejAwXzQ2MDM7CkJnTF9hdXh6MDBfNDYwMyA9IAooaW50 KSgoKGxvbmcpMSkpOyAKQmdMX2F1eHowMF80NjAyID0gClZFQ1RPUl9SRUYoQmdMX3Byb2N6MDBf NDQsQmdMX2F1eHowMF80NjAzKTsgfSAKQmdMX2F1eHowMF80NjAwID0gCihpbnQpKCgobG9uZykw KSk7IApWRUNUT1JfU0VUKEJnTF92MTA1NnowMF8xMTE0LEJnTF9hdXh6MDBfNDYwMCxCZ0xfYXV4 ejAwXzQ2MDIpOyB9IApCZ0xfYXJnMTY3OXowMF8xMTEzID0gQmdMX3YxMDU2ejAwXzExMTQ7IH0g CnsgCmludCBCZ0xfYXV4ejAwXzQ2MDc7CkJnTF9hdXh6MDBfNDYwNyA9IAooaW50KSgoKGxvbmcp MikpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNTV6MDBfMTExMSxCZ0xfYXV4ejAwXzQ2MDcsQmdMX2Fy ZzE2Nzl6MDBfMTExMyk7IH0gfSAKeyAKaW50IEJnTF9hdXh6MDBfNDYxMDsKQmdMX2F1eHowMF80 NjEwID0gCihpbnQpKCgobG9uZykxKSk7IApWRUNUT1JfU0VUKEJnTF92MTA1NXowMF8xMTExLEJn TF9hdXh6MDBfNDYxMCxCZ0xfbG9jejAwXzQ2KTsgfSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20g NDEyICovCmxvbmcgQmdMX2FyZzE2ODN6MDBfMTExODsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20g NDEyICovCmJvb2xfdCBCZ0xfdGVzdHowMF80NjEzOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0 MTIgKi8Kb2JqX3QgQmdMX2F1eHowMF80NjE4O29ial90IEJnTF9hdXh6MDBfNDYxNDsKQmdMX2F1 eHowMF80NjE4ID0gCkJJTlQoKChsb25nKTEpKTsgCnsgCmludCBCZ0xfYXV4ejAwXzQ2MTU7CkJn TF9hdXh6MDBfNDYxNSA9IAooaW50KSgoKGxvbmcpMCkpOyAKQmdMX2F1eHowMF80NjE0ID0gClZF Q1RPUl9SRUYoQmdMX3Byb2N6MDBfNDQsQmdMX2F1eHowMF80NjE1KTsgfSAKQmdMX3Rlc3R6MDBf NDYxMyA9IAooQmdMX2F1eHowMF80NjE0PT1CZ0xfYXV4ejAwXzQ2MTgpOyB9IAppZihCZ0xfdGVz dHowMF80NjEzKQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0MTIgKi8KQmdMX2FyZzE2ODN6MDBf MTExOCA9ICgobG9uZykyNCk7IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDQxMiAq LwpCZ0xfYXJnMTY4M3owMF8xMTE4ID0gKChsb25nKTYyKTsgfSB9IAp7IApvYmpfdCBCZ0xfYXV4 ejAwXzQ2MjM7aW50IEJnTF9hdXh6MDBfNDYyMTsKQmdMX2F1eHowMF80NjIzID0gCkJJTlQoQmdM X2FyZzE2ODN6MDBfMTExOCk7IApCZ0xfYXV4ejAwXzQ2MjEgPSAKKGludCkoKChsb25nKTApKTsg ClZFQ1RPUl9TRVQoQmdMX3YxMDU1ejAwXzExMTEsQmdMX2F1eHowMF80NjIxLEJnTF9hdXh6MDBf NDYyMyk7IH0gfSAKcmV0dXJuIEJnTF92MTA1NXowMF8xMTExO30gfSB9IH0gCn0KCgoKLyogZXZj b21waWxlLWNvbXBpbGVkLWFwcGxpY2F0aW9uICovCm9ial90IEJHbF9ldmNvbXBpbGV6ZDJjb21w aWxlZHpkMmFwcGxpY2F0aW9uejAwenpfX2V2Y29tcGlsZXowMChvYmpfdCBCZ0xfcHJvY3owMF80 Nywgb2JqX3QgQmdMX2FjdHVhbHN6MDBfNDgsIG9ial90IEJnTF9sb2N6MDBfNDkpCnsgQU5fT0JK RUNUOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0MjEgKi8KeyAKCnN3aXRjaCggCmJnbF9saXN0 X2xlbmd0aChCZ0xfYWN0dWFsc3owMF80OCkpIHsgY2FzZSAoKGxvbmcpMCkgOiAKCnsgLyogRXZh bC9ldmNvbXBpbGUuc2NtIDQyNCAqLwpvYmpfdCBCZ0xfdjEwNzJ6MDBfMTEyNTsKeyAKaW50IEJn TF9hdXh6MDBfNDYyODsKQmdMX2F1eHowMF80NjI4ID0gCihpbnQpKCgobG9uZykzKSk7IApCZ0xf djEwNzJ6MDBfMTEyNSA9IApjcmVhdGVfdmVjdG9yKEJnTF9hdXh6MDBfNDYyOCk7IH0gCnsgCmlu dCBCZ0xfYXV4ejAwXzQ2MzE7CkJnTF9hdXh6MDBfNDYzMSA9IAooaW50KSgoKGxvbmcpMikpOyAK VkVDVE9SX1NFVChCZ0xfdjEwNzJ6MDBfMTEyNSxCZ0xfYXV4ejAwXzQ2MzEsQmdMX3Byb2N6MDBf NDcpOyB9IAp7IAppbnQgQmdMX2F1eHowMF80NjM0OwpCZ0xfYXV4ejAwXzQ2MzQgPSAKKGludCko KChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDcyejAwXzExMjUsQmdMX2F1eHowMF80NjM0 LEJnTF9sb2N6MDBfNDkpOyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzQ2Mzk7aW50IEJnTF9hdXh6 MDBfNDYzNzsKQmdMX2F1eHowMF80NjM5ID0gCkJJTlQoKChsb25nKTI1KSk7IApCZ0xfYXV4ejAw XzQ2MzcgPSAKKGludCkoKChsb25nKTApKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDcyejAwXzExMjUs QmdMX2F1eHowMF80NjM3LEJnTF9hdXh6MDBfNDYzOSk7IH0gCnJldHVybiBCZ0xfdjEwNzJ6MDBf MTEyNTt9IGJyZWFrO2Nhc2UgKChsb25nKTEpIDogCgp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0 MjYgKi8Kb2JqX3QgQmdMX3YxMDczejAwXzExMjY7CnsgCmludCBCZ0xfYXV4ejAwXzQ2NDI7CkJn TF9hdXh6MDBfNDY0MiA9IAooaW50KSgoKGxvbmcpMykpOyAKQmdMX3YxMDczejAwXzExMjYgPSAK Y3JlYXRlX3ZlY3RvcihCZ0xfYXV4ejAwXzQ2NDIpOyB9IAp7IC8qIEV2YWwvZXZjb21waWxlLnNj bSA0MjYgKi8Kb2JqX3QgQmdMX2FyZzE2ODl6MDBfMTEyODsKeyAvKiBFdmFsL2V2Y29tcGlsZS5z Y20gNDI2ICovCm9ial90IEJnTF92MTA3NHowMF8xMTI5Owp7IAppbnQgQmdMX2F1eHowMF80NjQ1 OwpCZ0xfYXV4ejAwXzQ2NDUgPSAKKGludCkoKChsb25nKTIpKTsgCkJnTF92MTA3NHowMF8xMTI5 ID0gCmNyZWF0ZV92ZWN0b3IoQmdMX2F1eHowMF80NjQ1KTsgfSAKeyAKb2JqX3QgQmdMX2F1eHow MF80NjUwO2ludCBCZ0xfYXV4ejAwXzQ2NDg7CkJnTF9hdXh6MDBfNDY1MCA9IApDQVIoQmdMX2Fj dHVhbHN6MDBfNDgpOyAKQmdMX2F1eHowMF80NjQ4ID0gCihpbnQpKCgobG9uZykxKSk7IApWRUNU T1JfU0VUKEJnTF92MTA3NHowMF8xMTI5LEJnTF9hdXh6MDBfNDY0OCxCZ0xfYXV4ejAwXzQ2NTAp OyB9IAp7IAppbnQgQmdMX2F1eHowMF80NjUzOwpCZ0xfYXV4ejAwXzQ2NTMgPSAKKGludCkoKChs b25nKTApKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDc0ejAwXzExMjksQmdMX2F1eHowMF80NjUzLEJn TF9wcm9jejAwXzQ3KTsgfSAKQmdMX2FyZzE2ODl6MDBfMTEyOCA9IEJnTF92MTA3NHowMF8xMTI5 OyB9IAp7IAppbnQgQmdMX2F1eHowMF80NjU2OwpCZ0xfYXV4ejAwXzQ2NTYgPSAKKGludCkoKChs b25nKTIpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDczejAwXzExMjYsQmdMX2F1eHowMF80NjU2LEJn TF9hcmcxNjg5ejAwXzExMjgpOyB9IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQ2NTk7CkJnTF9hdXh6 MDBfNDY1OSA9IAooaW50KSgoKGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNzN6MDBfMTEy NixCZ0xfYXV4ejAwXzQ2NTksQmdMX2xvY3owMF80OSk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBf NDY2NDtpbnQgQmdMX2F1eHowMF80NjYyOwpCZ0xfYXV4ejAwXzQ2NjQgPSAKQklOVCgoKGxvbmcp MjYpKTsgCkJnTF9hdXh6MDBfNDY2MiA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChC Z0xfdjEwNzN6MDBfMTEyNixCZ0xfYXV4ejAwXzQ2NjIsQmdMX2F1eHowMF80NjY0KTsgfSAKcmV0 dXJuIEJnTF92MTA3M3owMF8xMTI2O30gYnJlYWs7Y2FzZSAoKGxvbmcpMikgOiAKCnsgLyogRXZh bC9ldmNvbXBpbGUuc2NtIDQyOCAqLwpvYmpfdCBCZ0xfdjEwNzV6MDBfMTEzMjsKeyAKaW50IEJn TF9hdXh6MDBfNDY2NzsKQmdMX2F1eHowMF80NjY3ID0gCihpbnQpKCgobG9uZykzKSk7IApCZ0xf djEwNzV6MDBfMTEzMiA9IApjcmVhdGVfdmVjdG9yKEJnTF9hdXh6MDBfNDY2Nyk7IH0gCnsgLyog RXZhbC9ldmNvbXBpbGUuc2NtIDQyOCAqLwpvYmpfdCBCZ0xfYXJnMTY5NHowMF8xMTM0Owp7IC8q IEV2YWwvZXZjb21waWxlLnNjbSA0MjggKi8Kb2JqX3QgQmdMX3YxMDc2ejAwXzExMzU7CnsgCmlu dCBCZ0xfYXV4ejAwXzQ2NzA7CkJnTF9hdXh6MDBfNDY3MCA9IAooaW50KSgoKGxvbmcpMykpOyAK QmdMX3YxMDc2ejAwXzExMzUgPSAKY3JlYXRlX3ZlY3RvcihCZ0xfYXV4ejAwXzQ2NzApOyB9IAp7 IApvYmpfdCBCZ0xfYXV4ejAwXzQ2NzU7aW50IEJnTF9hdXh6MDBfNDY3MzsKeyAvKiBFdmFsL2V2 Y29tcGlsZS5zY20gNDI5ICovCm9ial90IEJnTF9hdXh6MDBfNDY3NjsKQmdMX2F1eHowMF80Njc2 ID0gCkNEUihCZ0xfYWN0dWFsc3owMF80OCk7IApCZ0xfYXV4ejAwXzQ2NzUgPSAKQ0FSKEJnTF9h dXh6MDBfNDY3Nik7IH0gCkJnTF9hdXh6MDBfNDY3MyA9IAooaW50KSgoKGxvbmcpMikpOyAKVkVD VE9SX1NFVChCZ0xfdjEwNzZ6MDBfMTEzNSxCZ0xfYXV4ejAwXzQ2NzMsQmdMX2F1eHowMF80Njc1 KTsgfSAKeyAKb2JqX3QgQmdMX2F1eHowMF80NjgyO2ludCBCZ0xfYXV4ejAwXzQ2ODA7CkJnTF9h dXh6MDBfNDY4MiA9IApDQVIoQmdMX2FjdHVhbHN6MDBfNDgpOyAKQmdMX2F1eHowMF80NjgwID0g CihpbnQpKCgobG9uZykxKSk7IApWRUNUT1JfU0VUKEJnTF92MTA3NnowMF8xMTM1LEJnTF9hdXh6 MDBfNDY4MCxCZ0xfYXV4ejAwXzQ2ODIpOyB9IAp7IAppbnQgQmdMX2F1eHowMF80Njg1OwpCZ0xf YXV4ejAwXzQ2ODUgPSAKKGludCkoKChsb25nKTApKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDc2ejAw XzExMzUsQmdMX2F1eHowMF80Njg1LEJnTF9wcm9jejAwXzQ3KTsgfSAKQmdMX2FyZzE2OTR6MDBf MTEzNCA9IEJnTF92MTA3NnowMF8xMTM1OyB9IAp7IAppbnQgQmdMX2F1eHowMF80Njg4OwpCZ0xf YXV4ejAwXzQ2ODggPSAKKGludCkoKChsb25nKTIpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDc1ejAw XzExMzIsQmdMX2F1eHowMF80Njg4LEJnTF9hcmcxNjk0ejAwXzExMzQpOyB9IH0gCnsgCmludCBC Z0xfYXV4ejAwXzQ2OTE7CkJnTF9hdXh6MDBfNDY5MSA9IAooaW50KSgoKGxvbmcpMSkpOyAKVkVD VE9SX1NFVChCZ0xfdjEwNzV6MDBfMTEzMixCZ0xfYXV4ejAwXzQ2OTEsQmdMX2xvY3owMF80OSk7 IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDY5NjtpbnQgQmdMX2F1eHowMF80Njk0OwpCZ0xfYXV4 ejAwXzQ2OTYgPSAKQklOVCgoKGxvbmcpMjcpKTsgCkJnTF9hdXh6MDBfNDY5NCA9IAooaW50KSgo KGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNzV6MDBfMTEzMixCZ0xfYXV4ejAwXzQ2OTQs QmdMX2F1eHowMF80Njk2KTsgfSAKcmV0dXJuIEJnTF92MTA3NXowMF8xMTMyO30gYnJlYWs7Y2Fz ZSAoKGxvbmcpMykgOiAKCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDQzMSAqLwpvYmpfdCBCZ0xf djEwNzd6MDBfMTE0MDsKeyAKaW50IEJnTF9hdXh6MDBfNDY5OTsKQmdMX2F1eHowMF80Njk5ID0g CihpbnQpKCgobG9uZykzKSk7IApCZ0xfdjEwNzd6MDBfMTE0MCA9IApjcmVhdGVfdmVjdG9yKEJn TF9hdXh6MDBfNDY5OSk7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDQzMSAqLwpvYmpfdCBC Z0xfYXJnMTcwMHowMF8xMTQyOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0MzEgKi8Kb2JqX3Qg QmdMX3YxMDc4ejAwXzExNDM7CnsgCmludCBCZ0xfYXV4ejAwXzQ3MDI7CkJnTF9hdXh6MDBfNDcw MiA9IAooaW50KSgoKGxvbmcpNCkpOyAKQmdMX3YxMDc4ejAwXzExNDMgPSAKY3JlYXRlX3ZlY3Rv cihCZ0xfYXV4ejAwXzQ3MDIpOyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzQ3MDc7aW50IEJnTF9h dXh6MDBfNDcwNTsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNDMzICovCm9ial90IEJnTF9hdXh6 MDBfNDcwODsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNDMzICovCm9ial90IEJnTF9hdXh6MDBf NDcwOTsKQmdMX2F1eHowMF80NzA5ID0gCkNEUihCZ0xfYWN0dWFsc3owMF80OCk7IApCZ0xfYXV4 ejAwXzQ3MDggPSAKQ0RSKEJnTF9hdXh6MDBfNDcwOSk7IH0gCkJnTF9hdXh6MDBfNDcwNyA9IApD QVIoQmdMX2F1eHowMF80NzA4KTsgfSAKQmdMX2F1eHowMF80NzA1ID0gCihpbnQpKCgobG9uZykz KSk7IApWRUNUT1JfU0VUKEJnTF92MTA3OHowMF8xMTQzLEJnTF9hdXh6MDBfNDcwNSxCZ0xfYXV4 ejAwXzQ3MDcpOyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzQ3MTY7aW50IEJnTF9hdXh6MDBfNDcx NDsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNDMyICovCm9ial90IEJnTF9hdXh6MDBfNDcxNzsK QmdMX2F1eHowMF80NzE3ID0gCkNEUihCZ0xfYWN0dWFsc3owMF80OCk7IApCZ0xfYXV4ejAwXzQ3 MTYgPSAKQ0FSKEJnTF9hdXh6MDBfNDcxNyk7IH0gCkJnTF9hdXh6MDBfNDcxNCA9IAooaW50KSgo KGxvbmcpMikpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNzh6MDBfMTE0MyxCZ0xfYXV4ejAwXzQ3MTQs QmdMX2F1eHowMF80NzE2KTsgfSAKeyAKb2JqX3QgQmdMX2F1eHowMF80NzIzO2ludCBCZ0xfYXV4 ejAwXzQ3MjE7CkJnTF9hdXh6MDBfNDcyMyA9IApDQVIoQmdMX2FjdHVhbHN6MDBfNDgpOyAKQmdM X2F1eHowMF80NzIxID0gCihpbnQpKCgobG9uZykxKSk7IApWRUNUT1JfU0VUKEJnTF92MTA3OHow MF8xMTQzLEJnTF9hdXh6MDBfNDcyMSxCZ0xfYXV4ejAwXzQ3MjMpOyB9IAp7IAppbnQgQmdMX2F1 eHowMF80NzI2OwpCZ0xfYXV4ejAwXzQ3MjYgPSAKKGludCkoKChsb25nKTApKTsgClZFQ1RPUl9T RVQoQmdMX3YxMDc4ejAwXzExNDMsQmdMX2F1eHowMF80NzI2LEJnTF9wcm9jejAwXzQ3KTsgfSAK QmdMX2FyZzE3MDB6MDBfMTE0MiA9IEJnTF92MTA3OHowMF8xMTQzOyB9IAp7IAppbnQgQmdMX2F1 eHowMF80NzI5OwpCZ0xfYXV4ejAwXzQ3MjkgPSAKKGludCkoKChsb25nKTIpKTsgClZFQ1RPUl9T RVQoQmdMX3YxMDc3ejAwXzExNDAsQmdMX2F1eHowMF80NzI5LEJnTF9hcmcxNzAwejAwXzExNDIp OyB9IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQ3MzI7CkJnTF9hdXh6MDBfNDczMiA9IAooaW50KSgo KGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNzd6MDBfMTE0MCxCZ0xfYXV4ejAwXzQ3MzIs QmdMX2xvY3owMF80OSk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDczNztpbnQgQmdMX2F1eHow MF80NzM1OwpCZ0xfYXV4ejAwXzQ3MzcgPSAKQklOVCgoKGxvbmcpMjgpKTsgCkJnTF9hdXh6MDBf NDczNSA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwNzd6MDBfMTE0MCxC Z0xfYXV4ejAwXzQ3MzUsQmdMX2F1eHowMF80NzM3KTsgfSAKcmV0dXJuIEJnTF92MTA3N3owMF8x MTQwO30gYnJlYWs7Y2FzZSAoKGxvbmcpNCkgOiAKCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDQz NSAqLwpvYmpfdCBCZ0xfdjEwNzl6MDBfMTE1MDsKeyAKaW50IEJnTF9hdXh6MDBfNDc0MDsKQmdM X2F1eHowMF80NzQwID0gCihpbnQpKCgobG9uZykzKSk7IApCZ0xfdjEwNzl6MDBfMTE1MCA9IApj cmVhdGVfdmVjdG9yKEJnTF9hdXh6MDBfNDc0MCk7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2Nt IDQzNSAqLwpvYmpfdCBCZ0xfYXJnMTcwOHowMF8xMTUyOwp7IC8qIEV2YWwvZXZjb21waWxlLnNj bSA0MzUgKi8Kb2JqX3QgQmdMX3YxMDgwejAwXzExNTM7CnsgCmludCBCZ0xfYXV4ejAwXzQ3NDM7 CkJnTF9hdXh6MDBfNDc0MyA9IAooaW50KSgoKGxvbmcpNSkpOyAKQmdMX3YxMDgwejAwXzExNTMg PSAKY3JlYXRlX3ZlY3RvcihCZ0xfYXV4ejAwXzQ3NDMpOyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAw XzQ3NDg7aW50IEJnTF9hdXh6MDBfNDc0NjsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNDM4ICov Cm9ial90IEJnTF9hdXh6MDBfNDc0OTsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNDM4ICovCm9i al90IEJnTF9hdXh6MDBfNDc1MDsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNDM4ICovCm9ial90 IEJnTF9hdXh6MDBfNDc1MTsKQmdMX2F1eHowMF80NzUxID0gCkNEUihCZ0xfYWN0dWFsc3owMF80 OCk7IApCZ0xfYXV4ejAwXzQ3NTAgPSAKQ0RSKEJnTF9hdXh6MDBfNDc1MSk7IH0gCkJnTF9hdXh6 MDBfNDc0OSA9IApDRFIoQmdMX2F1eHowMF80NzUwKTsgfSAKQmdMX2F1eHowMF80NzQ4ID0gCkNB UihCZ0xfYXV4ejAwXzQ3NDkpOyB9IApCZ0xfYXV4ejAwXzQ3NDYgPSAKKGludCkoKChsb25nKTQp KTsgClZFQ1RPUl9TRVQoQmdMX3YxMDgwejAwXzExNTMsQmdMX2F1eHowMF80NzQ2LEJnTF9hdXh6 MDBfNDc0OCk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDc1OTtpbnQgQmdMX2F1eHowMF80NzU3 Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0MzcgKi8Kb2JqX3QgQmdMX2F1eHowMF80NzYwOwp7 IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0MzcgKi8Kb2JqX3QgQmdMX2F1eHowMF80NzYxOwpCZ0xf YXV4ejAwXzQ3NjEgPSAKQ0RSKEJnTF9hY3R1YWxzejAwXzQ4KTsgCkJnTF9hdXh6MDBfNDc2MCA9 IApDRFIoQmdMX2F1eHowMF80NzYxKTsgfSAKQmdMX2F1eHowMF80NzU5ID0gCkNBUihCZ0xfYXV4 ejAwXzQ3NjApOyB9IApCZ0xfYXV4ejAwXzQ3NTcgPSAKKGludCkoKChsb25nKTMpKTsgClZFQ1RP Ul9TRVQoQmdMX3YxMDgwejAwXzExNTMsQmdMX2F1eHowMF80NzU3LEJnTF9hdXh6MDBfNDc1OSk7 IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDc2ODtpbnQgQmdMX2F1eHowMF80NzY2Owp7IC8qIEV2 YWwvZXZjb21waWxlLnNjbSA0MzYgKi8Kb2JqX3QgQmdMX2F1eHowMF80NzY5OwpCZ0xfYXV4ejAw XzQ3NjkgPSAKQ0RSKEJnTF9hY3R1YWxzejAwXzQ4KTsgCkJnTF9hdXh6MDBfNDc2OCA9IApDQVIo QmdMX2F1eHowMF80NzY5KTsgfSAKQmdMX2F1eHowMF80NzY2ID0gCihpbnQpKCgobG9uZykyKSk7 IApWRUNUT1JfU0VUKEJnTF92MTA4MHowMF8xMTUzLEJnTF9hdXh6MDBfNDc2NixCZ0xfYXV4ejAw XzQ3NjgpOyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzQ3NzU7aW50IEJnTF9hdXh6MDBfNDc3MzsK QmdMX2F1eHowMF80Nzc1ID0gCkNBUihCZ0xfYWN0dWFsc3owMF80OCk7IApCZ0xfYXV4ejAwXzQ3 NzMgPSAKKGludCkoKChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDgwejAwXzExNTMsQmdM X2F1eHowMF80NzczLEJnTF9hdXh6MDBfNDc3NSk7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQ3Nzg7 CkJnTF9hdXh6MDBfNDc3OCA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEw ODB6MDBfMTE1MyxCZ0xfYXV4ejAwXzQ3NzgsQmdMX3Byb2N6MDBfNDcpOyB9IApCZ0xfYXJnMTcw OHowMF8xMTUyID0gQmdMX3YxMDgwejAwXzExNTM7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQ3ODE7 CkJnTF9hdXh6MDBfNDc4MSA9IAooaW50KSgoKGxvbmcpMikpOyAKVkVDVE9SX1NFVChCZ0xfdjEw Nzl6MDBfMTE1MCxCZ0xfYXV4ejAwXzQ3ODEsQmdMX2FyZzE3MDh6MDBfMTE1Mik7IH0gfSAKeyAK aW50IEJnTF9hdXh6MDBfNDc4NDsKQmdMX2F1eHowMF80Nzg0ID0gCihpbnQpKCgobG9uZykxKSk7 IApWRUNUT1JfU0VUKEJnTF92MTA3OXowMF8xMTUwLEJnTF9hdXh6MDBfNDc4NCxCZ0xfbG9jejAw XzQ5KTsgfSAKeyAKb2JqX3QgQmdMX2F1eHowMF80Nzg5O2ludCBCZ0xfYXV4ejAwXzQ3ODc7CkJn TF9hdXh6MDBfNDc4OSA9IApCSU5UKCgobG9uZykyOSkpOyAKQmdMX2F1eHowMF80Nzg3ID0gCihp bnQpKCgobG9uZykwKSk7IApWRUNUT1JfU0VUKEJnTF92MTA3OXowMF8xMTUwLEJnTF9hdXh6MDBf NDc4NyxCZ0xfYXV4ejAwXzQ3ODkpOyB9IApyZXR1cm4gQmdMX3YxMDc5ejAwXzExNTA7fSBicmVh azsKZGVmYXVsdDogCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDQ0MCAqLwpvYmpfdCBCZ0xfdjEw Njl6MDBfMTE2MjsKeyAKaW50IEJnTF9hdXh6MDBfNDc5MjsKQmdMX2F1eHowMF80NzkyID0gCihp bnQpKCgobG9uZykzKSk7IApCZ0xfdjEwNjl6MDBfMTE2MiA9IApjcmVhdGVfdmVjdG9yKEJnTF9h dXh6MDBfNDc5Mik7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDQ0MCAqLwpvYmpfdCBCZ0xf YXJnMTcxOHowMF8xMTY0OwpCZ0xfYXJnMTcxOHowMF8xMTY0ID0gCk1BS0VfUEFJUihCZ0xfcHJv Y3owMF80NywgQmdMX2FjdHVhbHN6MDBfNDgpOyAKeyAKaW50IEJnTF9hdXh6MDBfNDc5NjsKQmdM X2F1eHowMF80Nzk2ID0gCihpbnQpKCgobG9uZykyKSk7IApWRUNUT1JfU0VUKEJnTF92MTA2OXow MF8xMTYyLEJnTF9hdXh6MDBfNDc5NixCZ0xfYXJnMTcxOHowMF8xMTY0KTsgfSB9IAp7IAppbnQg QmdMX2F1eHowMF80Nzk5OwpCZ0xfYXV4ejAwXzQ3OTkgPSAKKGludCkoKChsb25nKTEpKTsgClZF Q1RPUl9TRVQoQmdMX3YxMDY5ejAwXzExNjIsQmdMX2F1eHowMF80Nzk5LEJnTF9sb2N6MDBfNDkp OyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzQ4MDQ7aW50IEJnTF9hdXh6MDBfNDgwMjsKQmdMX2F1 eHowMF80ODA0ID0gCkJJTlQoKChsb25nKTMwKSk7IApCZ0xfYXV4ejAwXzQ4MDIgPSAKKGludCko KChsb25nKTApKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDY5ejAwXzExNjIsQmdMX2F1eHowMF80ODAy LEJnTF9hdXh6MDBfNDgwNCk7IH0gCnJldHVybiBCZ0xfdjEwNjl6MDBfMTE2Mjt9IH0gfSB9IAp9 CgoKCi8qIGV2Y29tcGlsZS1hcHBsaWNhdGlvbiAqLwpvYmpfdCBCR2xfZXZjb21waWxlemQyYXBw bGljYXRpb256ZDJ6el9fZXZjb21waWxlejAwKG9ial90IEJnTF9uYW1lejAwXzUwLCBvYmpfdCBC Z0xfcHJvY3owMF81MSwgb2JqX3QgQmdMX2FjdHVhbHN6MDBfNTIsIG9ial90IEJnTF9sb2N6MDBf NTMpCnsgQU5fT0JKRUNUOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0NDUgKi8KeyAKCnN3aXRj aCggCmJnbF9saXN0X2xlbmd0aChCZ0xfYWN0dWFsc3owMF81MikpIHsgY2FzZSAoKGxvbmcpMCkg OiAKCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDQ0OCAqLwpvYmpfdCBCZ0xfdjEwODV6MDBfMTE2 ODsKeyAKaW50IEJnTF9hdXh6MDBfNDgwOTsKQmdMX2F1eHowMF80ODA5ID0gCihpbnQpKCgobG9u ZykzKSk7IApCZ0xfdjEwODV6MDBfMTE2OCA9IApjcmVhdGVfdmVjdG9yKEJnTF9hdXh6MDBfNDgw OSk7IH0gCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDQ0OCAqLwpvYmpfdCBCZ0xfYXJnMTcyMXow MF8xMTcwOwpCZ0xfYXJnMTcyMXowMF8xMTcwID0gCk1BS0VfUEFJUihCZ0xfbmFtZXowMF81MCwg QmdMX3Byb2N6MDBfNTEpOyAKeyAKaW50IEJnTF9hdXh6MDBfNDgxMzsKQmdMX2F1eHowMF80ODEz ID0gCihpbnQpKCgobG9uZykyKSk7IApWRUNUT1JfU0VUKEJnTF92MTA4NXowMF8xMTY4LEJnTF9h dXh6MDBfNDgxMyxCZ0xfYXJnMTcyMXowMF8xMTcwKTsgfSB9IAp7IAppbnQgQmdMX2F1eHowMF80 ODE2OwpCZ0xfYXV4ejAwXzQ4MTYgPSAKKGludCkoKChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdM X3YxMDg1ejAwXzExNjgsQmdMX2F1eHowMF80ODE2LEJnTF9sb2N6MDBfNTMpOyB9IAp7IApvYmpf dCBCZ0xfYXV4ejAwXzQ4MjE7aW50IEJnTF9hdXh6MDBfNDgxOTsKQmdMX2F1eHowMF80ODIxID0g CkJJTlQoKChsb25nKTMxKSk7IApCZ0xfYXV4ejAwXzQ4MTkgPSAKKGludCkoKChsb25nKTApKTsg ClZFQ1RPUl9TRVQoQmdMX3YxMDg1ejAwXzExNjgsQmdMX2F1eHowMF80ODE5LEJnTF9hdXh6MDBf NDgyMSk7IH0gCnJldHVybiBCZ0xfdjEwODV6MDBfMTE2ODt9IGJyZWFrO2Nhc2UgKChsb25nKTEp IDogCgp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0NTAgKi8Kb2JqX3QgQmdMX3YxMDg2ejAwXzEx NzE7CnsgCmludCBCZ0xfYXV4ejAwXzQ4MjQ7CkJnTF9hdXh6MDBfNDgyNCA9IAooaW50KSgoKGxv bmcpMykpOyAKQmdMX3YxMDg2ejAwXzExNzEgPSAKY3JlYXRlX3ZlY3RvcihCZ0xfYXV4ejAwXzQ4 MjQpOyB9IAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0NTAgKi8Kb2JqX3QgQmdMX2FyZzE3MjN6 MDBfMTE3MzsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNDUwICovCm9ial90IEJnTF92MTA4N3ow MF8xMTc0Owp7IAppbnQgQmdMX2F1eHowMF80ODI3OwpCZ0xfYXV4ejAwXzQ4MjcgPSAKKGludCko KChsb25nKTMpKTsgCkJnTF92MTA4N3owMF8xMTc0ID0gCmNyZWF0ZV92ZWN0b3IoQmdMX2F1eHow MF80ODI3KTsgfSAKeyAKb2JqX3QgQmdMX2F1eHowMF80ODMyO2ludCBCZ0xfYXV4ejAwXzQ4MzA7 CkJnTF9hdXh6MDBfNDgzMiA9IApDQVIoQmdMX2FjdHVhbHN6MDBfNTIpOyAKQmdMX2F1eHowMF80 ODMwID0gCihpbnQpKCgobG9uZykyKSk7IApWRUNUT1JfU0VUKEJnTF92MTA4N3owMF8xMTc0LEJn TF9hdXh6MDBfNDgzMCxCZ0xfYXV4ejAwXzQ4MzIpOyB9IAp7IAppbnQgQmdMX2F1eHowMF80ODM1 OwpCZ0xfYXV4ejAwXzQ4MzUgPSAKKGludCkoKChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdMX3Yx MDg3ejAwXzExNzQsQmdMX2F1eHowMF80ODM1LEJnTF9wcm9jejAwXzUxKTsgfSAKeyAKaW50IEJn TF9hdXh6MDBfNDgzODsKQmdMX2F1eHowMF80ODM4ID0gCihpbnQpKCgobG9uZykwKSk7IApWRUNU T1JfU0VUKEJnTF92MTA4N3owMF8xMTc0LEJnTF9hdXh6MDBfNDgzOCxCZ0xfbmFtZXowMF81MCk7 IH0gCkJnTF9hcmcxNzIzejAwXzExNzMgPSBCZ0xfdjEwODd6MDBfMTE3NDsgfSAKeyAKaW50IEJn TF9hdXh6MDBfNDg0MTsKQmdMX2F1eHowMF80ODQxID0gCihpbnQpKCgobG9uZykyKSk7IApWRUNU T1JfU0VUKEJnTF92MTA4NnowMF8xMTcxLEJnTF9hdXh6MDBfNDg0MSxCZ0xfYXJnMTcyM3owMF8x MTczKTsgfSB9IAp7IAppbnQgQmdMX2F1eHowMF80ODQ0OwpCZ0xfYXV4ejAwXzQ4NDQgPSAKKGlu dCkoKChsb25nKTEpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDg2ejAwXzExNzEsQmdMX2F1eHowMF80 ODQ0LEJnTF9sb2N6MDBfNTMpOyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzQ4NDk7aW50IEJnTF9h dXh6MDBfNDg0NzsKQmdMX2F1eHowMF80ODQ5ID0gCkJJTlQoKChsb25nKTMyKSk7IApCZ0xfYXV4 ejAwXzQ4NDcgPSAKKGludCkoKChsb25nKTApKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDg2ejAwXzEx NzEsQmdMX2F1eHowMF80ODQ3LEJnTF9hdXh6MDBfNDg0OSk7IH0gCnJldHVybiBCZ0xfdjEwODZ6 MDBfMTE3MTt9IGJyZWFrO2Nhc2UgKChsb25nKTIpIDogCgp7IC8qIEV2YWwvZXZjb21waWxlLnNj bSA0NTMgKi8Kb2JqX3QgQmdMX3YxMDg4ejAwXzExNzc7CnsgCmludCBCZ0xfYXV4ejAwXzQ4NTI7 CkJnTF9hdXh6MDBfNDg1MiA9IAooaW50KSgoKGxvbmcpMykpOyAKQmdMX3YxMDg4ejAwXzExNzcg PSAKY3JlYXRlX3ZlY3RvcihCZ0xfYXV4ejAwXzQ4NTIpOyB9IAp7IC8qIEV2YWwvZXZjb21waWxl LnNjbSA0NTMgKi8Kb2JqX3QgQmdMX2FyZzE3Mjd6MDBfMTE3OTsKeyAvKiBFdmFsL2V2Y29tcGls ZS5zY20gNDUzICovCm9ial90IEJnTF92MTA4OXowMF8xMTgwOwp7IAppbnQgQmdMX2F1eHowMF80 ODU1OwpCZ0xfYXV4ejAwXzQ4NTUgPSAKKGludCkoKChsb25nKTQpKTsgCkJnTF92MTA4OXowMF8x MTgwID0gCmNyZWF0ZV92ZWN0b3IoQmdMX2F1eHowMF80ODU1KTsgfSAKeyAKb2JqX3QgQmdMX2F1 eHowMF80ODYwO2ludCBCZ0xfYXV4ejAwXzQ4NTg7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDQ1 NSAqLwpvYmpfdCBCZ0xfYXV4ejAwXzQ4NjE7CkJnTF9hdXh6MDBfNDg2MSA9IApDRFIoQmdMX2Fj dHVhbHN6MDBfNTIpOyAKQmdMX2F1eHowMF80ODYwID0gCkNBUihCZ0xfYXV4ejAwXzQ4NjEpOyB9 IApCZ0xfYXV4ejAwXzQ4NTggPSAKKGludCkoKChsb25nKTMpKTsgClZFQ1RPUl9TRVQoQmdMX3Yx MDg5ejAwXzExODAsQmdMX2F1eHowMF80ODU4LEJnTF9hdXh6MDBfNDg2MCk7IH0gCnsgCm9ial90 IEJnTF9hdXh6MDBfNDg2NztpbnQgQmdMX2F1eHowMF80ODY1OwpCZ0xfYXV4ejAwXzQ4NjcgPSAK Q0FSKEJnTF9hY3R1YWxzejAwXzUyKTsgCkJnTF9hdXh6MDBfNDg2NSA9IAooaW50KSgoKGxvbmcp MikpOyAKVkVDVE9SX1NFVChCZ0xfdjEwODl6MDBfMTE4MCxCZ0xfYXV4ejAwXzQ4NjUsQmdMX2F1 eHowMF80ODY3KTsgfSAKeyAKaW50IEJnTF9hdXh6MDBfNDg3MDsKQmdMX2F1eHowMF80ODcwID0g CihpbnQpKCgobG9uZykxKSk7IApWRUNUT1JfU0VUKEJnTF92MTA4OXowMF8xMTgwLEJnTF9hdXh6 MDBfNDg3MCxCZ0xfcHJvY3owMF81MSk7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQ4NzM7CkJnTF9h dXh6MDBfNDg3MyA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwODl6MDBf MTE4MCxCZ0xfYXV4ejAwXzQ4NzMsQmdMX25hbWV6MDBfNTApOyB9IApCZ0xfYXJnMTcyN3owMF8x MTc5ID0gQmdMX3YxMDg5ejAwXzExODA7IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQ4NzY7CkJnTF9h dXh6MDBfNDg3NiA9IAooaW50KSgoKGxvbmcpMikpOyAKVkVDVE9SX1NFVChCZ0xfdjEwODh6MDBf MTE3NyxCZ0xfYXV4ejAwXzQ4NzYsQmdMX2FyZzE3Mjd6MDBfMTE3OSk7IH0gfSAKeyAKaW50IEJn TF9hdXh6MDBfNDg3OTsKQmdMX2F1eHowMF80ODc5ID0gCihpbnQpKCgobG9uZykxKSk7IApWRUNU T1JfU0VUKEJnTF92MTA4OHowMF8xMTc3LEJnTF9hdXh6MDBfNDg3OSxCZ0xfbG9jejAwXzUzKTsg fSAKeyAKb2JqX3QgQmdMX2F1eHowMF80ODg0O2ludCBCZ0xfYXV4ejAwXzQ4ODI7CkJnTF9hdXh6 MDBfNDg4NCA9IApCSU5UKCgobG9uZykzMykpOyAKQmdMX2F1eHowMF80ODgyID0gCihpbnQpKCgo bG9uZykwKSk7IApWRUNUT1JfU0VUKEJnTF92MTA4OHowMF8xMTc3LEJnTF9hdXh6MDBfNDg4MixC Z0xfYXV4ejAwXzQ4ODQpOyB9IApyZXR1cm4gQmdMX3YxMDg4ejAwXzExNzc7fSBicmVhaztjYXNl ICgobG9uZykzKSA6IAoKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNDU3ICovCm9ial90IEJnTF92 MTA5MHowMF8xMTg1Owp7IAppbnQgQmdMX2F1eHowMF80ODg3OwpCZ0xfYXV4ejAwXzQ4ODcgPSAK KGludCkoKChsb25nKTMpKTsgCkJnTF92MTA5MHowMF8xMTg1ID0gCmNyZWF0ZV92ZWN0b3IoQmdM X2F1eHowMF80ODg3KTsgfSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNDU3ICovCm9ial90IEJn TF9hcmcxNzMzejAwXzExODc7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDQ1NyAqLwpvYmpfdCBC Z0xfdjEwOTF6MDBfMTE4ODsKeyAKaW50IEJnTF9hdXh6MDBfNDg5MDsKQmdMX2F1eHowMF80ODkw ID0gCihpbnQpKCgobG9uZyk1KSk7IApCZ0xfdjEwOTF6MDBfMTE4OCA9IApjcmVhdGVfdmVjdG9y KEJnTF9hdXh6MDBfNDg5MCk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDg5NTtpbnQgQmdMX2F1 eHowMF80ODkzOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0NjAgKi8Kb2JqX3QgQmdMX2F1eHow MF80ODk2Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0NjAgKi8Kb2JqX3QgQmdMX2F1eHowMF80 ODk3OwpCZ0xfYXV4ejAwXzQ4OTcgPSAKQ0RSKEJnTF9hY3R1YWxzejAwXzUyKTsgCkJnTF9hdXh6 MDBfNDg5NiA9IApDRFIoQmdMX2F1eHowMF80ODk3KTsgfSAKQmdMX2F1eHowMF80ODk1ID0gCkNB UihCZ0xfYXV4ejAwXzQ4OTYpOyB9IApCZ0xfYXV4ejAwXzQ4OTMgPSAKKGludCkoKChsb25nKTQp KTsgClZFQ1RPUl9TRVQoQmdMX3YxMDkxejAwXzExODgsQmdMX2F1eHowMF80ODkzLEJnTF9hdXh6 MDBfNDg5NSk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDkwNDtpbnQgQmdMX2F1eHowMF80OTAy Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0NTkgKi8Kb2JqX3QgQmdMX2F1eHowMF80OTA1OwpC Z0xfYXV4ejAwXzQ5MDUgPSAKQ0RSKEJnTF9hY3R1YWxzejAwXzUyKTsgCkJnTF9hdXh6MDBfNDkw NCA9IApDQVIoQmdMX2F1eHowMF80OTA1KTsgfSAKQmdMX2F1eHowMF80OTAyID0gCihpbnQpKCgo bG9uZykzKSk7IApWRUNUT1JfU0VUKEJnTF92MTA5MXowMF8xMTg4LEJnTF9hdXh6MDBfNDkwMixC Z0xfYXV4ejAwXzQ5MDQpOyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzQ5MTE7aW50IEJnTF9hdXh6 MDBfNDkwOTsKQmdMX2F1eHowMF80OTExID0gCkNBUihCZ0xfYWN0dWFsc3owMF81Mik7IApCZ0xf YXV4ejAwXzQ5MDkgPSAKKGludCkoKChsb25nKTIpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDkxejAw XzExODgsQmdMX2F1eHowMF80OTA5LEJnTF9hdXh6MDBfNDkxMSk7IH0gCnsgCmludCBCZ0xfYXV4 ejAwXzQ5MTQ7CkJnTF9hdXh6MDBfNDkxNCA9IAooaW50KSgoKGxvbmcpMSkpOyAKVkVDVE9SX1NF VChCZ0xfdjEwOTF6MDBfMTE4OCxCZ0xfYXV4ejAwXzQ5MTQsQmdMX3Byb2N6MDBfNTEpOyB9IAp7 IAppbnQgQmdMX2F1eHowMF80OTE3OwpCZ0xfYXV4ejAwXzQ5MTcgPSAKKGludCkoKChsb25nKTAp KTsgClZFQ1RPUl9TRVQoQmdMX3YxMDkxejAwXzExODgsQmdMX2F1eHowMF80OTE3LEJnTF9uYW1l ejAwXzUwKTsgfSAKQmdMX2FyZzE3MzN6MDBfMTE4NyA9IEJnTF92MTA5MXowMF8xMTg4OyB9IAp7 IAppbnQgQmdMX2F1eHowMF80OTIwOwpCZ0xfYXV4ejAwXzQ5MjAgPSAKKGludCkoKChsb25nKTIp KTsgClZFQ1RPUl9TRVQoQmdMX3YxMDkwejAwXzExODUsQmdMX2F1eHowMF80OTIwLEJnTF9hcmcx NzMzejAwXzExODcpOyB9IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQ5MjM7CkJnTF9hdXh6MDBfNDky MyA9IAooaW50KSgoKGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwOTB6MDBfMTE4NSxCZ0xf YXV4ejAwXzQ5MjMsQmdMX2xvY3owMF81Myk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDkyODtp bnQgQmdMX2F1eHowMF80OTI2OwpCZ0xfYXV4ejAwXzQ5MjggPSAKQklOVCgoKGxvbmcpMzQpKTsg CkJnTF9hdXh6MDBfNDkyNiA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xfdjEw OTB6MDBfMTE4NSxCZ0xfYXV4ejAwXzQ5MjYsQmdMX2F1eHowMF80OTI4KTsgfSAKcmV0dXJuIEJn TF92MTA5MHowMF8xMTg1O30gYnJlYWs7Y2FzZSAoKGxvbmcpNCkgOiAKCnsgLyogRXZhbC9ldmNv bXBpbGUuc2NtIDQ2MiAqLwpvYmpfdCBCZ0xfdjEwOTJ6MDBfMTE5NTsKeyAKaW50IEJnTF9hdXh6 MDBfNDkzMTsKQmdMX2F1eHowMF80OTMxID0gCihpbnQpKCgobG9uZykzKSk7IApCZ0xfdjEwOTJ6 MDBfMTE5NSA9IApjcmVhdGVfdmVjdG9yKEJnTF9hdXh6MDBfNDkzMSk7IH0gCnsgLyogRXZhbC9l dmNvbXBpbGUuc2NtIDQ2MiAqLwpvYmpfdCBCZ0xfYXJnMTc0MXowMF8xMTk3Owp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSA0NjIgKi8Kb2JqX3QgQmdMX3YxMDkzejAwXzExOTg7CnsgCmludCBCZ0xf YXV4ejAwXzQ5MzQ7CkJnTF9hdXh6MDBfNDkzNCA9IAooaW50KSgoKGxvbmcpNikpOyAKQmdMX3Yx MDkzejAwXzExOTggPSAKY3JlYXRlX3ZlY3RvcihCZ0xfYXV4ejAwXzQ5MzQpOyB9IAp7IApvYmpf dCBCZ0xfYXV4ejAwXzQ5Mzk7aW50IEJnTF9hdXh6MDBfNDkzNzsKeyAvKiBFdmFsL2V2Y29tcGls ZS5zY20gNDY2ICovCm9ial90IEJnTF9hdXh6MDBfNDk0MDsKeyAvKiBFdmFsL2V2Y29tcGlsZS5z Y20gNDY2ICovCm9ial90IEJnTF9hdXh6MDBfNDk0MTsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20g NDY2ICovCm9ial90IEJnTF9hdXh6MDBfNDk0MjsKQmdMX2F1eHowMF80OTQyID0gCkNEUihCZ0xf YWN0dWFsc3owMF81Mik7IApCZ0xfYXV4ejAwXzQ5NDEgPSAKQ0RSKEJnTF9hdXh6MDBfNDk0Mik7 IH0gCkJnTF9hdXh6MDBfNDk0MCA9IApDRFIoQmdMX2F1eHowMF80OTQxKTsgfSAKQmdMX2F1eHow MF80OTM5ID0gCkNBUihCZ0xfYXV4ejAwXzQ5NDApOyB9IApCZ0xfYXV4ejAwXzQ5MzcgPSAKKGlu dCkoKChsb25nKTUpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDkzejAwXzExOTgsQmdMX2F1eHowMF80 OTM3LEJnTF9hdXh6MDBfNDkzOSk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDk1MDtpbnQgQmdM X2F1eHowMF80OTQ4Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0NjUgKi8Kb2JqX3QgQmdMX2F1 eHowMF80OTUxOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0NjUgKi8Kb2JqX3QgQmdMX2F1eHow MF80OTUyOwpCZ0xfYXV4ejAwXzQ5NTIgPSAKQ0RSKEJnTF9hY3R1YWxzejAwXzUyKTsgCkJnTF9h dXh6MDBfNDk1MSA9IApDRFIoQmdMX2F1eHowMF80OTUyKTsgfSAKQmdMX2F1eHowMF80OTUwID0g CkNBUihCZ0xfYXV4ejAwXzQ5NTEpOyB9IApCZ0xfYXV4ejAwXzQ5NDggPSAKKGludCkoKChsb25n KTQpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDkzejAwXzExOTgsQmdMX2F1eHowMF80OTQ4LEJnTF9h dXh6MDBfNDk1MCk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDk1OTtpbnQgQmdMX2F1eHowMF80 OTU3Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0NjQgKi8Kb2JqX3QgQmdMX2F1eHowMF80OTYw OwpCZ0xfYXV4ejAwXzQ5NjAgPSAKQ0RSKEJnTF9hY3R1YWxzejAwXzUyKTsgCkJnTF9hdXh6MDBf NDk1OSA9IApDQVIoQmdMX2F1eHowMF80OTYwKTsgfSAKQmdMX2F1eHowMF80OTU3ID0gCihpbnQp KCgobG9uZykzKSk7IApWRUNUT1JfU0VUKEJnTF92MTA5M3owMF8xMTk4LEJnTF9hdXh6MDBfNDk1 NyxCZ0xfYXV4ejAwXzQ5NTkpOyB9IAp7IApvYmpfdCBCZ0xfYXV4ejAwXzQ5NjY7aW50IEJnTF9h dXh6MDBfNDk2NDsKQmdMX2F1eHowMF80OTY2ID0gCkNBUihCZ0xfYWN0dWFsc3owMF81Mik7IApC Z0xfYXV4ejAwXzQ5NjQgPSAKKGludCkoKChsb25nKTIpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDkz ejAwXzExOTgsQmdMX2F1eHowMF80OTY0LEJnTF9hdXh6MDBfNDk2Nik7IH0gCnsgCmludCBCZ0xf YXV4ejAwXzQ5Njk7CkJnTF9hdXh6MDBfNDk2OSA9IAooaW50KSgoKGxvbmcpMSkpOyAKVkVDVE9S X1NFVChCZ0xfdjEwOTN6MDBfMTE5OCxCZ0xfYXV4ejAwXzQ5NjksQmdMX3Byb2N6MDBfNTEpOyB9 IAp7IAppbnQgQmdMX2F1eHowMF80OTcyOwpCZ0xfYXV4ejAwXzQ5NzIgPSAKKGludCkoKChsb25n KTApKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDkzejAwXzExOTgsQmdMX2F1eHowMF80OTcyLEJnTF9u YW1lejAwXzUwKTsgfSAKQmdMX2FyZzE3NDF6MDBfMTE5NyA9IEJnTF92MTA5M3owMF8xMTk4OyB9 IAp7IAppbnQgQmdMX2F1eHowMF80OTc1OwpCZ0xfYXV4ejAwXzQ5NzUgPSAKKGludCkoKChsb25n KTIpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDkyejAwXzExOTUsQmdMX2F1eHowMF80OTc1LEJnTF9h cmcxNzQxejAwXzExOTcpOyB9IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQ5Nzg7CkJnTF9hdXh6MDBf NDk3OCA9IAooaW50KSgoKGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwOTJ6MDBfMTE5NSxC Z0xfYXV4ejAwXzQ5NzgsQmdMX2xvY3owMF81Myk7IH0gCnsgCm9ial90IEJnTF9hdXh6MDBfNDk4 MztpbnQgQmdMX2F1eHowMF80OTgxOwpCZ0xfYXV4ejAwXzQ5ODMgPSAKQklOVCgoKGxvbmcpMzUp KTsgCkJnTF9hdXh6MDBfNDk4MSA9IAooaW50KSgoKGxvbmcpMCkpOyAKVkVDVE9SX1NFVChCZ0xf djEwOTJ6MDBfMTE5NSxCZ0xfYXV4ejAwXzQ5ODEsQmdMX2F1eHowMF80OTgzKTsgfSAKcmV0dXJu IEJnTF92MTA5MnowMF8xMTk1O30gYnJlYWs7CmRlZmF1bHQ6IAp7IC8qIEV2YWwvZXZjb21waWxl LnNjbSA0NjggKi8Kb2JqX3QgQmdMX3YxMDgxejAwXzEyMDc7CnsgCmludCBCZ0xfYXV4ejAwXzQ5 ODY7CkJnTF9hdXh6MDBfNDk4NiA9IAooaW50KSgoKGxvbmcpMykpOyAKQmdMX3YxMDgxejAwXzEy MDcgPSAKY3JlYXRlX3ZlY3RvcihCZ0xfYXV4ejAwXzQ5ODYpOyB9IAp7IC8qIEV2YWwvZXZjb21w aWxlLnNjbSA0NjggKi8Kb2JqX3QgQmdMX2FyZzE3NTF6MDBfMTIwOTsKeyAvKiBFdmFsL2V2Y29t cGlsZS5zY20gNDY4ICovCm9ial90IEJnTF92MTA4MnowMF8xMjEwOwp7IAppbnQgQmdMX2F1eHow MF80OTg5OwpCZ0xfYXV4ejAwXzQ5ODkgPSAKKGludCkoKChsb25nKTMpKTsgCkJnTF92MTA4Mnow MF8xMjEwID0gCmNyZWF0ZV92ZWN0b3IoQmdMX2F1eHowMF80OTg5KTsgfSAKeyAKaW50IEJnTF9h dXh6MDBfNDk5MjsKQmdMX2F1eHowMF80OTkyID0gCihpbnQpKCgobG9uZykyKSk7IApWRUNUT1Jf U0VUKEJnTF92MTA4MnowMF8xMjEwLEJnTF9hdXh6MDBfNDk5MixCZ0xfYWN0dWFsc3owMF81Mik7 IH0gCnsgCmludCBCZ0xfYXV4ejAwXzQ5OTU7CkJnTF9hdXh6MDBfNDk5NSA9IAooaW50KSgoKGxv bmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xfdjEwODJ6MDBfMTIxMCxCZ0xfYXV4ejAwXzQ5OTUsQmdM X3Byb2N6MDBfNTEpOyB9IAp7IAppbnQgQmdMX2F1eHowMF80OTk4OwpCZ0xfYXV4ejAwXzQ5OTgg PSAKKGludCkoKChsb25nKTApKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDgyejAwXzEyMTAsQmdMX2F1 eHowMF80OTk4LEJnTF9uYW1lejAwXzUwKTsgfSAKQmdMX2FyZzE3NTF6MDBfMTIwOSA9IEJnTF92 MTA4MnowMF8xMjEwOyB9IAp7IAppbnQgQmdMX2F1eHowMF81MDAxOwpCZ0xfYXV4ejAwXzUwMDEg PSAKKGludCkoKChsb25nKTIpKTsgClZFQ1RPUl9TRVQoQmdMX3YxMDgxejAwXzEyMDcsQmdMX2F1 eHowMF81MDAxLEJnTF9hcmcxNzUxejAwXzEyMDkpOyB9IH0gCnsgCmludCBCZ0xfYXV4ejAwXzUw MDQ7CkJnTF9hdXh6MDBfNTAwNCA9IAooaW50KSgoKGxvbmcpMSkpOyAKVkVDVE9SX1NFVChCZ0xf djEwODF6MDBfMTIwNyxCZ0xfYXV4ejAwXzUwMDQsQmdMX2xvY3owMF81Myk7IH0gCnsgCm9ial90 IEJnTF9hdXh6MDBfNTAwOTtpbnQgQmdMX2F1eHowMF81MDA3OwpCZ0xfYXV4ejAwXzUwMDkgPSAK QklOVCgoKGxvbmcpMzYpKTsgCkJnTF9hdXh6MDBfNTAwNyA9IAooaW50KSgoKGxvbmcpMCkpOyAK VkVDVE9SX1NFVChCZ0xfdjEwODF6MDBfMTIwNyxCZ0xfYXV4ejAwXzUwMDcsQmdMX2F1eHowMF81 MDA5KTsgfSAKcmV0dXJuIEJnTF92MTA4MXowMF8xMjA3O30gfSB9IH0gCn0KCgoKLyogdmFyaWFi bGUgKi8Kb2JqX3QgQkdsX3ZhcmlhYmxlejAwenpfX2V2Y29tcGlsZXowMChvYmpfdCBCZ0xfbG9j ejAwXzU0LCBvYmpfdCBCZ0xfc3ltYm9sejAwXzU1LCBvYmpfdCBCZ0xfZW52ejAwXzU2LCBvYmpf dCBCZ0xfZ2VudnowMF81NykKeyBBTl9PQkpFQ1Q7CnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDQ3 NCAqLwppZigKU1lNQk9MUChCZ0xfc3ltYm9sejAwXzU1KSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5z Y20gNDc3ICovCm9ial90IEJnTF9vZmZzZXR6MDBfMTIxMjsKeyAKb2JqX3QgQmdMX2VudnowMF8y ODU5O2xvbmcgQmdMX2NvdW50ejAwXzI4NjA7CkJnTF9lbnZ6MDBfMjg1OSA9IEJnTF9lbnZ6MDBf NTY7IApCZ0xfY291bnR6MDBfMjg2MCA9ICgobG9uZykwKTsgCkJnTF9sb29wejAwXzI4NTg6Cmlm KApOVUxMUChCZ0xfZW52ejAwXzI4NTkpKQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0NzcgKi8K QmdMX29mZnNldHowMF8xMjEyID0gQkZBTFNFOyB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxl LnNjbSA0NzcgKi8KYm9vbF90IEJnTF90ZXN0ejAwXzUwMTg7CnsgLyogRXZhbC9ldmNvbXBpbGUu c2NtIDQ3NyAqLwpvYmpfdCBCZ0xfYXV4ejAwXzUwMTk7CkJnTF9hdXh6MDBfNTAxOSA9IApDQVIo QmdMX2VudnowMF8yODU5KTsgCkJnTF90ZXN0ejAwXzUwMTggPSAKKEJnTF9hdXh6MDBfNTAxOT09 QmdMX3N5bWJvbHowMF81NSk7IH0gCmlmKEJnTF90ZXN0ejAwXzUwMTgpCnsgLyogRXZhbC9ldmNv bXBpbGUuc2NtIDQ3NyAqLwpCZ0xfb2Zmc2V0ejAwXzEyMTIgPSAKQklOVChCZ0xfY291bnR6MDBf Mjg2MCk7IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDQ3NyAqLwp7IApsb25nIEJn TF9jb3VudHowMF81MDI1O29ial90IEJnTF9lbnZ6MDBfNTAyMzsKQmdMX2VudnowMF81MDIzID0g CkNEUihCZ0xfZW52ejAwXzI4NTkpOyAKQmdMX2NvdW50ejAwXzUwMjUgPSAKKEJnTF9jb3VudHow MF8yODYwKygobG9uZykxKSk7IApCZ0xfY291bnR6MDBfMjg2MCA9IEJnTF9jb3VudHowMF81MDI1 OyAKQmdMX2VudnowMF8yODU5ID0gQmdMX2VudnowMF81MDIzOyAKZ290byBCZ0xfbG9vcHowMF8y ODU4O30gfSB9IH0gCmlmKApDQk9PTChCZ0xfb2Zmc2V0ejAwXzEyMTIpKQp7IC8qIEV2YWwvZXZj b21waWxlLnNjbSA0ODYgKi8KcmV0dXJuIEJnTF9vZmZzZXR6MDBfMTIxMjt9ICBlbHNlIAp7IC8q IEV2YWwvZXZjb21waWxlLnNjbSA0ODggKi8Kb2JqX3QgQmdMX2dsb2JhbHowMF8xMjEzOwp7IC8q IEV2YWwvZXZjb21waWxlLnNjbSA0ODggKi8KYm9vbF90IEJnTF90ZXN0MTc1NXowMF8xMjE2Owp7 IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0ODggKi8KYm9vbF90IEJnTF90ZXN0ejAwXzUwMjk7Cnsg LyogRXZhbC9ldmNvbXBpbGUuc2NtIDQ4OCAqLwpvYmpfdCBCZ0xfYXV4ejAwXzUwMzA7CkJnTF9h dXh6MDBfNTAzMCA9IApCR2xfc2NoZW1lemQycmVwb3J0emQyZW52aXJvbm1lbnR6MDB6el9fZXZh bHowMCgKQklOVCgoKGxvbmcpNSkpKTsgCkJnTF90ZXN0ejAwXzUwMjkgPSAKKEJnTF9nZW52ejAw XzU3PT1CZ0xfYXV4ejAwXzUwMzApOyB9IAppZihCZ0xfdGVzdHowMF81MDI5KQp7IC8qIEV2YWwv ZXZjb21waWxlLnNjbSA0ODggKi8KQmdMX3Rlc3QxNzU1ejAwXzEyMTYgPSAoKGJvb2xfdCkxKTsg fSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNDg5ICovCm9ial90IEJnTF9hdXh6MDBf NTAzNDsKQmdMX2F1eHowMF81MDM0ID0gCkJHbF9pbnRlcmFjdGlvbnpkMmVudmlyb25tZW50emQy enpfX2V2YWx6MDAoKTsgCkJnTF90ZXN0MTc1NXowMF8xMjE2ID0gCihCZ0xfZ2VudnowMF81Nz09 QmdMX2F1eHowMF81MDM0KTsgfSB9IAppZihCZ0xfdGVzdDE3NTV6MDBfMTIxNikKeyAvKiBFdmFs L2V2Y29tcGlsZS5zY20gNDg4ICovCkJnTF9nbG9iYWx6MDBfMTIxMyA9IApCR2xfZXZhbHpkMmxv b2t1cHpkMnp6X19ldmVudnowMChCZ0xfc3ltYm9sejAwXzU1KTsgfSAgZWxzZSAKeyAvKiBFdmFs L2V2Y29tcGlsZS5zY20gNDg4ICovCkJnTF9nbG9iYWx6MDBfMTIxMyA9IApCR2xfZXZjb21waWxl emQyZXJyb3J6ZDJ6el9fZXZjb21waWxlejAwKEJnTF9sb2N6MDBfNTQsIEJHbF9zdHJpbmcxOTI2 ejAwenpfX2V2Y29tcGlsZXowMCwgQkdsX3N0cmluZzE5NDV6MDB6el9fZXZjb21waWxlejAwLCBC Z0xfc3ltYm9sejAwXzU1KTsgfSB9IAppZigKQ0JPT0woQmdMX2dsb2JhbHowMF8xMjEzKSkKeyAv KiBFdmFsL2V2Y29tcGlsZS5zY20gNDk1ICovCnJldHVybiBCZ0xfZ2xvYmFsejAwXzEyMTM7fSAg ZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNDk2ICovCmJvb2xfdCBCZ0xfdGVzdHowMF81 MDQyOwp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA0OTYgKi8Kb2JqX3QgQmdMX2F1eHowMF81MDQz OwpCZ0xfYXV4ejAwXzUwNDMgPSAKQkdsX3NjaGVtZXpkMnJlcG9ydHpkMmVudmlyb25tZW50ejAw enpfX2V2YWx6MDAoCkJJTlQoKChsb25nKTUpKSk7IApCZ0xfdGVzdHowMF81MDQyID0gCihCZ0xf Z2VudnowMF81Nz09QmdMX2F1eHowMF81MDQzKTsgfSAKaWYoQmdMX3Rlc3R6MDBfNTA0MikKeyAv KiBFdmFsL2V2Y29tcGlsZS5zY20gNDk2ICovCnJldHVybiAKQkdsX2V2Y29tcGlsZXpkMmVycm9y emQyenpfX2V2Y29tcGlsZXowMChCZ0xfbG9jejAwXzU0LCBCR2xfc3RyaW5nMTkyNnowMHp6X19l dmNvbXBpbGV6MDAsIEJHbF9zdHJpbmcxOTQ1ejAwenpfX2V2Y29tcGlsZXowMCwgQmdMX3N5bWJv bHowMF81NSk7fSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNDk2ICovCnJldHVybiAK TUFLRV9QQUlSKEJHbF9zeW1ib2wxOTQ0ejAwenpfX2V2Y29tcGlsZXowMCwgQmdMX3N5bWJvbHow MF81NSk7fSB9IH0gfSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNDc1ICovCnJldHVy biAKQkdsX2V2Y29tcGlsZXpkMmVycm9yemQyenpfX2V2Y29tcGlsZXowMChCZ0xfbG9jejAwXzU0 LCBCR2xfc3RyaW5nMTkyNnowMHp6X19ldmNvbXBpbGV6MDAsIEJHbF9zdHJpbmcxOTQ2ejAwenpf X2V2Y29tcGlsZXowMCwgQmdMX3N5bWJvbHowMF81NSk7fSB9IAp9CgoKCi8qIF9sb29wXyAqLwpv YmpfdCBCR2xfX2xvb3BfejAwenpfX2V2Y29tcGlsZXowMChvYmpfdCBCZ0xfb2xkemQyZW52emQy XzI5OTksIG9ial90IEJnTF9leHRlbmR6MDBfMTIzMSkKeyBBTl9PQkpFQ1Q7CnsgLyogRXZhbC9l dmNvbXBpbGUuc2NtIDUyMSAqLwppZigKTlVMTFAoQmdMX2V4dGVuZHowMF8xMjMxKSkKeyAvKiBF dmFsL2V2Y29tcGlsZS5zY20gNTIzICovCnJldHVybiBCZ0xfb2xkemQyZW52emQyXzI5OTk7fSAg ZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNTIzICovCmlmKApQQUlSUChCZ0xfZXh0ZW5k ejAwXzEyMzEpKQp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA1MjUgKi8KeyAvKiBFdmFsL2V2Y29t cGlsZS5zY20gNTI4ICovCm9ial90IEJnTF9hdXh6MDBfNTA1NjtvYmpfdCBCZ0xfYXV4ejAwXzUw NTQ7CkJnTF9hdXh6MDBfNTA1NiA9IApCR2xfX2xvb3BfejAwenpfX2V2Y29tcGlsZXowMChCZ0xf b2xkemQyZW52emQyXzI5OTksIApDRFIoQmdMX2V4dGVuZHowMF8xMjMxKSk7IApCZ0xfYXV4ejAw XzUwNTQgPSAKQ0FSKEJnTF9leHRlbmR6MDBfMTIzMSk7IApyZXR1cm4gCk1BS0VfUEFJUihCZ0xf YXV4ejAwXzUwNTQsIEJnTF9hdXh6MDBfNTA1Nik7fSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21w aWxlLnNjbSA1MjUgKi8KcmV0dXJuIApNQUtFX1BBSVIoQmdMX2V4dGVuZHowMF8xMjMxLCBCZ0xf b2xkemQyZW52emQyXzI5OTkpO30gfSB9IAp9CgoKCi8qIGV2Y29tcGlsZS1lcnJvciAqLwpvYmpf dCBCR2xfZXZjb21waWxlemQyZXJyb3J6ZDJ6el9fZXZjb21waWxlejAwKG9ial90IEJnTF9sb2N6 MDBfNjIsIG9ial90IEJnTF9wcm9jejAwXzYzLCBvYmpfdCBCZ0xfbWVzejAwXzY0LCBvYmpfdCBC Z0xfb2JqejAwXzY1KQp7IEFOX09CSkVDVDsKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNTMzICov CmlmKApQQUlSUChCZ0xfbG9jejAwXzYyKSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNTM0ICov Cm9ial90IEJnTF9jZHJ6ZDIyMTEwemQyXzEyNDQ7CkJnTF9jZHJ6ZDIyMTEwemQyXzEyNDQgPSAK Q0RSKEJnTF9sb2N6MDBfNjIpOyAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNTM0ICovCmJvb2xf dCBCZ0xfdGVzdHowMF81MDY0Owp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA1MzQgKi8Kb2JqX3Qg QmdMX2F1eHowMF81MDY1OwpCZ0xfYXV4ejAwXzUwNjUgPSAKQ0FSKEJnTF9sb2N6MDBfNjIpOyAK QmdMX3Rlc3R6MDBfNTA2NCA9IAooQmdMX2F1eHowMF81MDY1PT1CR2xfc3ltYm9sMTk0N3owMHp6 X19ldmNvbXBpbGV6MDApOyB9IAppZihCZ0xfdGVzdHowMF81MDY0KQp7IC8qIEV2YWwvZXZjb21w aWxlLnNjbSA1MzQgKi8KaWYoClBBSVJQKEJnTF9jZHJ6ZDIyMTEwemQyXzEyNDQpKQp7IC8qIEV2 YWwvZXZjb21waWxlLnNjbSA1MzQgKi8Kb2JqX3QgQmdMX2NkcnpkMjIxMTR6ZDJfMTI0NzsKQmdM X2NkcnpkMjIxMTR6ZDJfMTI0NyA9IApDRFIoQmdMX2NkcnpkMjIxMTB6ZDJfMTI0NCk7IAppZigK UEFJUlAoQmdMX2NkcnpkMjIxMTR6ZDJfMTI0NykpCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDUz NCAqLwppZigKQkdsX2VxdWFsemYzemYzenpfX3I0X2VxdWl2YWxlbmNlXzZfMnowMCgKQ0RSKEJn TF9jZHJ6ZDIyMTE0emQyXzEyNDcpLCBCTklMKSkKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNTM0 ICovCnJldHVybiAKQkdsX2Vycm9yemYybG9jYXRpb256ZjJ6el9fZXJyb3J6MDAoQmdMX3Byb2N6 MDBfNjMsIEJnTF9tZXN6MDBfNjQsIEJnTF9vYmp6MDBfNjUsIApDQVIoQmdMX2NkcnpkMjIxMTB6 ZDJfMTI0NCksIApDQVIoQmdMX2NkcnpkMjIxMTR6ZDJfMTI0NykpO30gIGVsc2UgCnsgLyogRXZh bC9ldmNvbXBpbGUuc2NtIDUzNCAqLwpGQUlMVVJFKEJnTF9wcm9jejAwXzYzLEJnTF9tZXN6MDBf NjQsQmdMX29ianowMF82NSk7fSB9ICBlbHNlIAp7IC8qIEV2YWwvZXZjb21waWxlLnNjbSA1MzQg Ki8KRkFJTFVSRShCZ0xfcHJvY3owMF82MyxCZ0xfbWVzejAwXzY0LEJnTF9vYmp6MDBfNjUpO30g fSAgZWxzZSAKeyAvKiBFdmFsL2V2Y29tcGlsZS5zY20gNTM0ICovCkZBSUxVUkUoQmdMX3Byb2N6 MDBfNjMsQmdMX21lc3owMF82NCxCZ0xfb2JqejAwXzY1KTt9IH0gIGVsc2UgCnsgLyogRXZhbC9l dmNvbXBpbGUuc2NtIDUzNCAqLwpGQUlMVVJFKEJnTF9wcm9jejAwXzYzLEJnTF9tZXN6MDBfNjQs QmdMX29ianowMF82NSk7fSB9IH0gIGVsc2UgCnsgLyogRXZhbC9ldmNvbXBpbGUuc2NtIDUzNCAq LwpGQUlMVVJFKEJnTF9wcm9jejAwXzYzLEJnTF9tZXN6MDBfNjQsQmdMX29ianowMF82NSk7fSB9 IAp9CgoKCi8qIGltcG9ydGVkLW1vZHVsZXMtaW5pdCAqLwpvYmpfdCBCR2xfaW1wb3J0ZWR6ZDJt b2R1bGVzemQyaW5pdHowMHp6X19ldmNvbXBpbGV6MDAoKQp7IEFOX09CSkVDVDsKeyAvKiBFdmFs L2V2Y29tcGlsZS5zY20gMTUgKi8KQkdsX21vZHVsZXpkMmluaXRpYWxpemE3YXRpb256NzV6el9f dHlwZXowMCgoKGxvbmcpOTQ5MTMpLCAiX19ldmNvbXBpbGUiKTsgCkJHbF9tb2R1bGV6ZDJpbml0 aWFsaXphN2F0aW9uejc1enpfX2Vycm9yejAwKCgobG9uZyk4NzY1NSksICJfX2V2Y29tcGlsZSIp OyAKQkdsX21vZHVsZXpkMmluaXRpYWxpemE3YXRpb256NzV6el9fYmlnbG9vejAwKCgobG9uZykx Nzg1NDcpLCAiX19ldmNvbXBpbGUiKTsgCkJHbF9tb2R1bGV6ZDJpbml0aWFsaXphN2F0aW9uejc1 enpfX3R2ZWN0b3J6MDAoKChsb25nKTU2MjM0KSwgIl9fZXZjb21waWxlIik7IApCR2xfbW9kdWxl emQyaW5pdGlhbGl6YTdhdGlvbno3NXp6X19zdHJ1Y3R1cmV6MDAoKChsb25nKTQ4MzQyKSwgIl9f ZXZjb21waWxlIik7IApCR2xfbW9kdWxlemQyaW5pdGlhbGl6YTdhdGlvbno3NXp6X19iZXhpdHow MCgoKGxvbmcpMzA5MjMpLCAiX19ldmNvbXBpbGUiKTsgCkJHbF9tb2R1bGV6ZDJpbml0aWFsaXph N2F0aW9uejc1enpfX29zejAwKCgobG9uZykxMDU1NDMpLCAiX19ldmNvbXBpbGUiKTsgCkJHbF9t b2R1bGV6ZDJpbml0aWFsaXphN2F0aW9uejc1enpfX2Rzc3NsejAwKCgobG9uZyk0ODQ1NiksICJf X2V2Y29tcGlsZSIpOyAKQkdsX21vZHVsZXpkMmluaXRpYWxpemE3YXRpb256NzV6el9fcjRfbnVt YmVyc182XzV6MDAoKChsb25nKTExOTcxMCksICJfX2V2Y29tcGlsZSIpOyAKQkdsX21vZHVsZXpk MmluaXRpYWxpemE3YXRpb256NzV6el9fcjRfbnVtYmVyc182XzVfZml4bnVtejAwKCgobG9uZykx OTMzMCksICJfX2V2Y29tcGlsZSIpOyAKQkdsX21vZHVsZXpkMmluaXRpYWxpemE3YXRpb256NzV6 el9fcjRfbnVtYmVyc182XzVfZmxvbnVtejAwKCgobG9uZykyMDg3NzcpLCAiX19ldmNvbXBpbGUi KTsgCkJHbF9tb2R1bGV6ZDJpbml0aWFsaXphN2F0aW9uejc1enpfX3I0X2NoYXJhY3RlcnNfNl82 ejAwKCgobG9uZykxODk4MDkpLCAiX19ldmNvbXBpbGUiKTsgCkJHbF9tb2R1bGV6ZDJpbml0aWFs aXphN2F0aW9uejc1enpfX3I0X2VxdWl2YWxlbmNlXzZfMnowMCgoKGxvbmcpMjA1MjkpLCAiX19l dmNvbXBpbGUiKTsgCkJHbF9tb2R1bGV6ZDJpbml0aWFsaXphN2F0aW9uejc1enpfX3I0X2Jvb2xl YW5zXzZfMXowMCgoKGxvbmcpNjQ0ODIpLCAiX19ldmNvbXBpbGUiKTsgCkJHbF9tb2R1bGV6ZDJp bml0aWFsaXphN2F0aW9uejc1enpfX3I0X3N5bWJvbHNfNl80ejAwKCgobG9uZyk1OTk1OSksICJf X2V2Y29tcGlsZSIpOyAKQkdsX21vZHVsZXpkMmluaXRpYWxpemE3YXRpb256NzV6el9fcjRfc3Ry aW5nc182Xzd6MDAoKChsb25nKTk4NTE5KSwgIl9fZXZjb21waWxlIik7IApCR2xfbW9kdWxlemQy aW5pdGlhbGl6YTdhdGlvbno3NXp6X19yNF9wYWlyc19hbmRfbGlzdHNfNl8zejAwKCgobG9uZyk5 MTkwNCksICJfX2V2Y29tcGlsZSIpOyAKQkdsX21vZHVsZXpkMmluaXRpYWxpemE3YXRpb256NzV6 el9fcjRfaW5wdXRfNl8xMF8yejAwKCgobG9uZyk0MTMxOSksICJfX2V2Y29tcGlsZSIpOyAKQkds X21vZHVsZXpkMmluaXRpYWxpemE3YXRpb256NzV6el9fcjRfY29udHJvbF9mZWF0dXJlc182Xzl6 MDAoKChsb25nKTcwNDkzKSwgIl9fZXZjb21waWxlIik7IApCR2xfbW9kdWxlemQyaW5pdGlhbGl6 YTdhdGlvbno3NXp6X19yNF92ZWN0b3JzXzZfOHowMCgoKGxvbmcpMjU3MDMpLCAiX19ldmNvbXBp bGUiKTsgCkJHbF9tb2R1bGV6ZDJpbml0aWFsaXphN2F0aW9uejc1enpfX3I0X3BvcnRzXzZfMTBf MXowMCgoKGxvbmcpMzkyNDkpLCAiX19ldmNvbXBpbGUiKTsgCkJHbF9tb2R1bGV6ZDJpbml0aWFs aXphN2F0aW9uejc1enpfX3I0X291dHB1dF82XzEwXzN6MDAoKChsb25nKTg1NzAxKSwgIl9fZXZj b21waWxlIik7IApCR2xfbW9kdWxlemQyaW5pdGlhbGl6YTdhdGlvbno3NXp6X19ldmVudnowMCgo KGxvbmcpMzA5NTgpLCAiX19ldmNvbXBpbGUiKTsgCkJHbF9tb2R1bGV6ZDJpbml0aWFsaXphN2F0 aW9uejc1enpfX2V2YWx6MDAoKChsb25nKTI2OTM5KSwgIl9fZXZjb21waWxlIik7IApyZXR1cm4g CkJHbF9tb2R1bGV6ZDJpbml0aWFsaXphN2F0aW9uejc1enpfX2V4cGFuZHowMCgoKGxvbmcpNTk1 MjApLCAiX19ldmNvbXBpbGUiKTt9IAp9Cgo=
next reply other threads:[~2002-03-04 15:56 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2002-03-04 7:56 Manuel.Serrano [this message] 2002-03-04 8:46 Zack Weinberg 2002-03-06 17:26 rodrigc 2002-03-08 10:36 Gwenole Beauchesne 2002-03-10 23:46 Manuel Serrano 2002-03-12 2:36 Gwenole Beauchesne 2002-03-15 0:06 Manuel Serrano
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20020304155502.12673.qmail@sources.redhat.com \ --to=manuel.serrano@inria.fr \ --cc=gcc-gnats@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).