[Patch] Fortran/OpenMP: Add parsing support for spatial dimensions

Tobias Burnus <[email protected]> Sun, 19 Jul 2026 20:21:15 +0200
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------3ucEhVCS4Xix0ekOx7wDyM8q
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

The attached patch adds parsing support for the following features:

* strict/relaxed modifiers to thread_limit and num_threads clauses
   (default is 'relaxed')

* supporting a list of arguments for num_threads
   This is to set the number of threads also for nested parallels;
   the OMP_NUM_THREADS env var already supports this.

* Spatial dimension support, e.g. 'num_teams(dim(3) : 32, 32, 32)',
   with the num_teams, thread_limit, and num_threads clauses.
   (this implies 'strict', unless overridden).

When using any of the new features (but the relaxed modifier),
a 'sorry, unimplemented' is printed.

Comments before I commit this?

Tobias

--------------3ucEhVCS4Xix0ekOx7wDyM8q
Content-Type: text/x-patch; charset=UTF-8; name="spatial-dim-fortran.diff"
Content-Disposition: attachment; filename="spatial-dim-fortran.diff"
Content-Transfer-Encoding: base64

Rm9ydHJhbi9PcGVuTVA6IEFkZCBwYXJzaW5nIHN1cHBvcnQgZm9yIHNwYXRpYWwgZGltZW5z
aW9ucwoKQWRkcyAnZGltKC4uLiknIG1vZGlmaWVyIHBhcnNpbmcgZm9yIHNwYXRpYWwgZGlt
ZW5zaW9ucyB0byB0aGUgbnVtX3RlYW1zLAp0aHJlYWRfbGltaXQsIGFuZCBudW1fdGhyZWFk
cyBjbGF1c2VzLgoKQWRkIHN0cmljdCArIHJlbGF4ZWQgbW9kaWZpZXIgc3VwcG9ydCB0byB0
aGUgdGhyZWFkX2xpbWl0IGFuZCBudW1fdGhyZWFkcwpjbGF1c2VzLiBbRm9yIHRlYW1zLCB0
aGUgZWZmZWN0IG9mIHN0cmljdC9yZWxheGVkIGlzIHByb3ZpZGVkIGJ5IHRoZQpsb3dlcl9i
b3VuZCBmZWF0dXJlLl0KCkZvciBudW1fdGhyZWFkcywgc3VwcG9ydCBzcGVjaWZpeWluZyBt
dWx0aXBsZSB2YWx1ZXMgLSB0byBiZSBhcHBsaWNhYmxlCmZvciBuZXN0ZWQgcGFyYWxsZWwg
Y29uc3RydWN0cy4KCk5PVEU6IEFsbCBhZGRlZCBmZWF0dXJlcyAoYnV0ICdyZWxheGVkJykg
d2lsbCBmYWlsIGFmdGVyIHBhcnNpbmcgd2l0aAphICdzb3JyeSwgdW5pbXBsZW1lbnRlZCcg
YXMgb25seSB0aGUgcGFyc2luZyBzdXBwb3J0IGhhcyBiZWVuIGFkZGVkIGFuZApub3QgdGhl
IGFjdHVhbCBmZWF0dXJlLgoKZ2NjL2ZvcnRyYW4vQ2hhbmdlTG9nOgoKCSogZHVtcC1wYXJz
ZS10cmVlLmNjIChzaG93X29tcF9jbGF1c2VzKTogSGFuZGxlIHNwYXRpYWwgZGltZW5zaW9u
CglpbiBudW1fdGVhbXMgYW5kIGl0IGFuZCBzdHJpY3QvcmVsYXhlZCBpbiB0aHJlYWRfbGlt
aXRzIGFuZAoJbnVtX3RocmVhZHMuCgkqIHRyYW5zLW9wZW5tcC5jYyAoZ2ZjX3RyYW5zX29t
cF9jbGF1c2VzLCBnZmNfc3BsaXRfb21wX2NsYXVzZXMpOgoJZ2ZjX3RyYW5zX29tcF90YXJn
ZXQpOiBMaWtld2lzZS4KCSogb3Blbm1wLmNjIChnZmNfZnJlZV9vbXBfY2xhdXNlcywgZ2Zj
X21hdGNoX29tcF9jbGF1c2VzLAoJcmVzb2x2ZV9vbXBfY2xhdXNlcyk6IExpa2V3aXNlLgoJ
KG1hdGNoX29tcF9vYWNjX2V4cHJfbGlzdCk6IFJldHVybiBjdXJyZW50IGxvY3VzIGZvciBh
IHBhcnNlCglmYWlsIGluc3RlYWQgb2YgcmVzZXR0aW5nIHRoZSBsb2N1cy4KCSogZ2ZvcnRy
YW4uaCAoZ2ZjX29tcF9jbGF1c2VzKTogQ2hhbmdlZCBnZmNfZXhwciBudW1fdGhyZWFkcywK
CW51bV90ZWFtc19sb3dlciwgbnVtX3RlYW1zX3VwcGVyLCBhbmQgdGhyZWFkX2xpbWl0IHRv
CglnZmNfZXhwcl9saXN0IG51bV90aHJlYWRzX2xpc3QsIG51bV90ZWFtc19saXN0LCBhbmQg
dGhyZWFkX2xpbWl0X2xpc3QuCglBZGQgdGhyZWFkX2xpbWl0X3N0cmljdCwgbnVtX3RocmVh
ZHNfc3RyaWN0LCBudW1fdGVhbXNfZGltcywKCXRocmVhZF9saW1pdF9kaW1zLCBhbmQgbnVt
X3RocmVhZHNfZGltcy4KCSogZnJvbnRlbmQtcGFzc2VzLmNjIChnZmNfY29kZV93YWxrZXIp
OiBVcGRhdGUgZm9yIHRoaXMgY2hhbmdlLgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CgoJ
KiBnZm9ydHJhbi5kZy9nb21wL3NwYXRpYWwtZGltZW5zaW9ucy0xLmY5MDogTmV3IHRlc3Qu
CgkqIGdmb3J0cmFuLmRnL2dvbXAvc3BhdGlhbC1kaW1lbnNpb25zLTIuZjkwOiBOZXcgdGVz
dC4KCSogZ2ZvcnRyYW4uZGcvZ29tcC9zcGF0aWFsLWRpbWVuc2lvbnMtMy5mOTA6IE5ldyB0
ZXN0LgoKIGdjYy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJlZS5jYyAgICAgICAgICAgICAgICAg
ICAgIHwgIDYwICsrKy0KIGdjYy9mb3J0cmFuL2Zyb250ZW5kLXBhc3Nlcy5jYyAgICAgICAg
ICAgICAgICAgICAgIHwgIDEzICstCiBnY2MvZm9ydHJhbi9nZm9ydHJhbi5oICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgOSArLQogZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMDEgKysrKysrKysrKysrKysrKysrLS0t
CiBnY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MgICAgICAgICAgICAgICAgICAgICAgICB8
IDEwNiArKysrKy0tLQogLi4uL2dmb3J0cmFuLmRnL2dvbXAvc3BhdGlhbC1kaW1lbnNpb25z
LTEuZjkwICAgICAgfCAxMTYgKysrKysrKysKIC4uLi9nZm9ydHJhbi5kZy9nb21wL3NwYXRp
YWwtZGltZW5zaW9ucy0yLmY5MCAgICAgIHwgIDIyICsrCiAuLi4vZ2ZvcnRyYW4uZGcvZ29t
cC9zcGF0aWFsLWRpbWVuc2lvbnMtMy5mOTAgICAgICB8IDI1MiArKysrKysrKysrKysrKysr
KwogOCBmaWxlcyBjaGFuZ2VkLCA3OTQgaW5zZXJ0aW9ucygrKSwgODUgZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vZHVtcC1wYXJzZS10cmVlLmNjIGIvZ2NjL2Zv
cnRyYW4vZHVtcC1wYXJzZS10cmVlLmNjCmluZGV4IDVmMDU4Y2RjODMwLi4zZjFiMzViNzE1
YSAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vZHVtcC1wYXJzZS10cmVlLmNjCisrKyBiL2dj
Yy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJlZS5jYwpAQCAtMTg5OCwxMCArMTg5OCwyNCBAQCBz
aG93X29tcF9jbGF1c2VzIChnZmNfb21wX2NsYXVzZXMgKm9tcF9jbGF1c2VzKQogICAgICAg
c2hvd19leHByIChvbXBfY2xhdXNlcy0+ZmluYWxfZXhwcik7CiAgICAgICBmcHV0YyAoJykn
LCBkdW1wZmlsZSk7CiAgICAgfQotICBpZiAob21wX2NsYXVzZXMtPm51bV90aHJlYWRzKQor
ICBpZiAob21wX2NsYXVzZXMtPm51bV90aHJlYWRzX2xpc3QpCiAgICAgewogICAgICAgZnB1
dHMgKCIgTlVNX1RIUkVBRFMoIiwgZHVtcGZpbGUpOwotICAgICAgc2hvd19leHByIChvbXBf
Y2xhdXNlcy0+bnVtX3RocmVhZHMpOworICAgICAgaWYgKG9tcF9jbGF1c2VzLT5udW1fdGhy
ZWFkc19zdHJpY3QpCisJZnB1dHMgKCJTVFJJQ1QiLCBkdW1wZmlsZSk7CisgICAgICBpZiAo
b21wX2NsYXVzZXMtPm51bV90aHJlYWRzX3N0cmljdCAmJiBvbXBfY2xhdXNlcy0+bnVtX3Ro
cmVhZHNfZGltcykKKwlmcHV0YyAoJywnLCBkdW1wZmlsZSk7CisgICAgICBpZiAob21wX2Ns
YXVzZXMtPm51bV90aHJlYWRzX2RpbXMpCisJZnB1dHMgKCJESU1TKCkiLCBkdW1wZmlsZSk7
CisgICAgICBpZiAob21wX2NsYXVzZXMtPm51bV90aHJlYWRzX3N0cmljdCB8fCBvbXBfY2xh
dXNlcy0+bnVtX3RocmVhZHNfZGltcykKKwlmcHV0YyAoJzonLCBkdW1wZmlsZSk7CisgICAg
ICBnZmNfZXhwcl9saXN0ICpudDsKKyAgICAgIGZvciAobnQgPSBvbXBfY2xhdXNlcy0+bnVt
X3RocmVhZHNfbGlzdDsgbnQ7IG50ID0gbnQtPm5leHQpCisJeworCSAgc2hvd19leHByIChu
dC0+ZXhwcik7CisJICBpZiAobnQtPm5leHQpCisJICAgIGZwdXRzICgiLCAiLCBkdW1wZmls
ZSk7CisJfQogICAgICAgZnB1dGMgKCcpJywgZHVtcGZpbGUpOwogICAgIH0KICAgaWYgKG9t
cF9jbGF1c2VzLT5hc3luYykKQEAgLTIxOTksMTUgKzIyMTMsMjkgQEAgc2hvd19vbXBfY2xh
dXNlcyAoZ2ZjX29tcF9jbGF1c2VzICpvbXBfY2xhdXNlcykKIAl9CiAgICAgICBmcHJpbnRm
IChkdW1wZmlsZSwgIiBCSU5EKCVzKSIsIHR5cGUpOwogICAgIH0KLSAgaWYgKG9tcF9jbGF1
c2VzLT5udW1fdGVhbXNfdXBwZXIpCisgIGlmIChvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX2xp
c3QpCiAgICAgewogICAgICAgZnB1dHMgKCIgTlVNX1RFQU1TKCIsIGR1bXBmaWxlKTsKLSAg
ICAgIGlmIChvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX2xvd2VyKQorICAgICAgaWYgKG9tcF9j
bGF1c2VzLT5udW1fdGVhbXNfZGltcykKIAl7Ci0JICBzaG93X2V4cHIgKG9tcF9jbGF1c2Vz
LT5udW1fdGVhbXNfbG93ZXIpOwotCSAgZnB1dGMgKCc6JywgZHVtcGZpbGUpOworCSAgZnB1
dHMgKCJESU1TKCk6IiwgZHVtcGZpbGUpOworCSAgZ2ZjX2V4cHJfbGlzdCAqbnQ7CisJICBm
b3IgKG50ID0gb21wX2NsYXVzZXMtPm51bV90ZWFtc19saXN0OyBudDsgbnQgPSBudC0+bmV4
dCkKKwkgICB7CisJICAgICBzaG93X2V4cHIgKG50LT5leHByKTsKKwkgICAgIGlmIChudC0+
bmV4dCkKKwkgICAgICAgZnB1dHMgKCIsICIsIGR1bXBmaWxlKTsKKwkgICB9CisJfQorICAg
ICAgZWxzZQorCXsKKwkgIHNob3dfZXhwciAob21wX2NsYXVzZXMtPm51bV90ZWFtc19saXN0
LT5leHByKTsKKwkgIGlmIChvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX2xpc3QtPm5leHQpCisJ
ICAgIHsKKwkgICAgICBmcHV0YyAoJzonLCBkdW1wZmlsZSk7CisJICAgICAgc2hvd19leHBy
IChvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX2xpc3QtPm5leHQtPmV4cHIpOworCSAgICB9CiAJ
fQotICAgICAgc2hvd19leHByIChvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX3VwcGVyKTsKICAg
ICAgIGZwdXRjICgnKScsIGR1bXBmaWxlKTsKICAgICB9CiAgIGlmIChvbXBfY2xhdXNlcy0+
ZGV2aWNlKQpAQCAtMjIxOCwxMCArMjI0NiwyNCBAQCBzaG93X29tcF9jbGF1c2VzIChnZmNf
b21wX2NsYXVzZXMgKm9tcF9jbGF1c2VzKQogICAgICAgc2hvd19leHByIChvbXBfY2xhdXNl
cy0+ZGV2aWNlKTsKICAgICAgIGZwdXRjICgnKScsIGR1bXBmaWxlKTsKICAgICB9Ci0gIGlm
IChvbXBfY2xhdXNlcy0+dGhyZWFkX2xpbWl0KQorICBpZiAob21wX2NsYXVzZXMtPnRocmVh
ZF9saW1pdF9saXN0KQogICAgIHsKICAgICAgIGZwdXRzICgiIFRIUkVBRF9MSU1JVCgiLCBk
dW1wZmlsZSk7Ci0gICAgICBzaG93X2V4cHIgKG9tcF9jbGF1c2VzLT50aHJlYWRfbGltaXQp
OworICAgICAgaWYgKG9tcF9jbGF1c2VzLT50aHJlYWRfbGltaXRfc3RyaWN0KQorCWZwdXRz
ICgiU1RSSUNUIiwgZHVtcGZpbGUpOworICAgICAgaWYgKG9tcF9jbGF1c2VzLT50aHJlYWRf
bGltaXRfc3RyaWN0ICYmIG9tcF9jbGF1c2VzLT50aHJlYWRfbGltaXRfZGltcykKKwlmcHV0
YyAoJywnLCBkdW1wZmlsZSk7CisgICAgICBpZiAob21wX2NsYXVzZXMtPnRocmVhZF9saW1p
dF9kaW1zKQorCWZwdXRzICgiRElNUygpIiwgZHVtcGZpbGUpOworICAgICAgaWYgKG9tcF9j
bGF1c2VzLT50aHJlYWRfbGltaXRfc3RyaWN0IHx8IG9tcF9jbGF1c2VzLT50aHJlYWRfbGlt
aXRfZGltcykKKwlmcHV0YyAoJzonLCBkdW1wZmlsZSk7CisgICAgICBnZmNfZXhwcl9saXN0
ICpudDsKKyAgICAgIGZvciAobnQgPSBvbXBfY2xhdXNlcy0+dGhyZWFkX2xpbWl0X2xpc3Q7
IG50OyBudCA9IG50LT5uZXh0KQorCXsKKwkgIHNob3dfZXhwciAobnQtPmV4cHIpOworCSAg
aWYgKG50LT5uZXh0KQorCSAgICBmcHV0cyAoIiwgIiwgZHVtcGZpbGUpOworCX0KICAgICAg
IGZwdXRjICgnKScsIGR1bXBmaWxlKTsKICAgICB9CiAgIGlmIChvbXBfY2xhdXNlcy0+ZGlz
dF9zY2hlZF9raW5kICE9IE9NUF9TQ0hFRF9OT05FKQpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRy
YW4vZnJvbnRlbmQtcGFzc2VzLmNjIGIvZ2NjL2ZvcnRyYW4vZnJvbnRlbmQtcGFzc2VzLmNj
CmluZGV4IDkyNjc4MzEwZmZkLi5mZDM0ZjBjMTkxMiAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRy
YW4vZnJvbnRlbmQtcGFzc2VzLmNjCisrKyBiL2djYy9mb3J0cmFuL2Zyb250ZW5kLXBhc3Nl
cy5jYwpAQCAtNTcwOSwxNCArNTcwOSwxMCBAQCBnZmNfY29kZV93YWxrZXIgKGdmY19jb2Rl
ICoqYywgd2Fsa19jb2RlX2ZuX3QgY29kZWZuLCB3YWxrX2V4cHJfZm5fdCBleHByZm4sCiAJ
CSAgZm9yIChpZHggPSAwOyBpZHggPCBPTVBfSUZfTEFTVDsgaWR4KyspCiAJCSAgICBXQUxL
X1NVQkVYUFIgKGNvLT5leHQub21wX2NsYXVzZXMtPmlmX2V4cHJzW2lkeF0pOwogCQkgIFdB
TEtfU1VCRVhQUiAoY28tPmV4dC5vbXBfY2xhdXNlcy0+ZmluYWxfZXhwcik7Ci0JCSAgV0FM
S19TVUJFWFBSIChjby0+ZXh0Lm9tcF9jbGF1c2VzLT5udW1fdGhyZWFkcyk7CiAJCSAgV0FM
S19TVUJFWFBSIChjby0+ZXh0Lm9tcF9jbGF1c2VzLT5jaHVua19zaXplKTsKIAkJICBXQUxL
X1NVQkVYUFIgKGNvLT5leHQub21wX2NsYXVzZXMtPnNhZmVsZW5fZXhwcik7CiAJCSAgV0FM
S19TVUJFWFBSIChjby0+ZXh0Lm9tcF9jbGF1c2VzLT5zaW1kbGVuX2V4cHIpOwotCQkgIFdB
TEtfU1VCRVhQUiAoY28tPmV4dC5vbXBfY2xhdXNlcy0+bnVtX3RlYW1zX2xvd2VyKTsKLQkJ
ICBXQUxLX1NVQkVYUFIgKGNvLT5leHQub21wX2NsYXVzZXMtPm51bV90ZWFtc191cHBlcik7
CiAJCSAgV0FMS19TVUJFWFBSIChjby0+ZXh0Lm9tcF9jbGF1c2VzLT5kZXZpY2UpOwotCQkg
IFdBTEtfU1VCRVhQUiAoY28tPmV4dC5vbXBfY2xhdXNlcy0+dGhyZWFkX2xpbWl0KTsKIAkJ
ICBXQUxLX1NVQkVYUFIgKGNvLT5leHQub21wX2NsYXVzZXMtPmRpc3RfY2h1bmtfc2l6ZSk7
CiAJCSAgV0FMS19TVUJFWFBSIChjby0+ZXh0Lm9tcF9jbGF1c2VzLT5ncmFpbnNpemUpOwog
CQkgIFdBTEtfU1VCRVhQUiAoY28tPmV4dC5vbXBfY2xhdXNlcy0+aGludCk7CkBAIC01NzI2
LDYgKzU3MjIsMTUgQEAgZ2ZjX2NvZGVfd2Fsa2VyIChnZmNfY29kZSAqKmMsIHdhbGtfY29k
ZV9mbl90IGNvZGVmbiwgd2Fsa19leHByX2ZuX3QgZXhwcmZuLAogCQkgIFdBTEtfU1VCRVhQ
UiAoY28tPmV4dC5vbXBfY2xhdXNlcy0+ZHluX2dyb3VwcHJpdmF0ZSk7CiAJCSAgV0FMS19T
VUJFWFBSIChjby0+ZXh0Lm9tcF9jbGF1c2VzLT5ub3ZhcmlhbnRzKTsKIAkJICBXQUxLX1NV
QkVYUFIgKGNvLT5leHQub21wX2NsYXVzZXMtPm5vY29udGV4dCk7CisJCSAgZ2ZjX2V4cHJf
bGlzdCAqZWwgPSBjby0+ZXh0Lm9tcF9jbGF1c2VzLT5udW1fdGVhbXNfbGlzdDsKKwkJICBm
b3IgKCA7IGVsOyBlbCA9IGVsLT5uZXh0KQorCQkgICAgV0FMS19TVUJFWFBSIChlbC0+ZXhw
cik7CisJCSAgZWwgPSBjby0+ZXh0Lm9tcF9jbGF1c2VzLT50aHJlYWRfbGltaXRfbGlzdDsK
KwkJICBmb3IgKCA7IGVsOyBlbCA9IGVsLT5uZXh0KQorCQkgICAgV0FMS19TVUJFWFBSIChl
bC0+ZXhwcik7CisJCSAgZWwgPSBjby0+ZXh0Lm9tcF9jbGF1c2VzLT5udW1fdGhyZWFkc19s
aXN0OworCQkgIGZvciAoIDsgZWw7IGVsID0gZWwtPm5leHQpCisJCSAgICBXQUxLX1NVQkVY
UFIgKGVsLT5leHByKTsKIAkJICBmb3IgKGlkeCA9IDA7IGlkeCA8IEFSUkFZX1NJWkUgKGxp
c3RfdHlwZXMpOyBpZHgrKykKIAkJICAgIGZvciAobiA9IGNvLT5leHQub21wX2NsYXVzZXMt
Pmxpc3RzW2xpc3RfdHlwZXNbaWR4XV07CiAJCQkgbjsgbiA9IG4tPm5leHQpCmRpZmYgLS1n
aXQgYS9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oIGIvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaApp
bmRleCBkZjk4NzU3NmZmZi4uNDhkZGQ5YTcyZDUgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFu
L2dmb3J0cmFuLmgKKysrIGIvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaApAQCAtMTcwOSwxNCAr
MTcwOSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBnZmNfb21wX2NsYXVzZXMKICAgc3RydWN0IGdm
Y19leHByICppZl9leHByc1tPTVBfSUZfTEFTVF07CiAgIHN0cnVjdCBnZmNfZXhwciAqc2Vs
Zl9leHByOwogICBzdHJ1Y3QgZ2ZjX2V4cHIgKmZpbmFsX2V4cHI7Ci0gIHN0cnVjdCBnZmNf
ZXhwciAqbnVtX3RocmVhZHM7CisgIHN0cnVjdCBnZmNfZXhwcl9saXN0ICpudW1fdGhyZWFk
c19saXN0OwogICBzdHJ1Y3QgZ2ZjX2V4cHIgKmNodW5rX3NpemU7CiAgIHN0cnVjdCBnZmNf
ZXhwciAqc2FmZWxlbl9leHByOwogICBzdHJ1Y3QgZ2ZjX2V4cHIgKnNpbWRsZW5fZXhwcjsK
LSAgc3RydWN0IGdmY19leHByICpudW1fdGVhbXNfbG93ZXI7Ci0gIHN0cnVjdCBnZmNfZXhw
ciAqbnVtX3RlYW1zX3VwcGVyOworICBzdHJ1Y3QgZ2ZjX2V4cHJfbGlzdCAqbnVtX3RlYW1z
X2xpc3Q7CiAgIHN0cnVjdCBnZmNfZXhwciAqZGV2aWNlOwotICBzdHJ1Y3QgZ2ZjX2V4cHIg
KnRocmVhZF9saW1pdDsKKyAgc3RydWN0IGdmY19leHByX2xpc3QgKnRocmVhZF9saW1pdF9s
aXN0OwogICBzdHJ1Y3QgZ2ZjX2V4cHIgKmdyYWluc2l6ZTsKICAgc3RydWN0IGdmY19leHBy
ICpmaWx0ZXI7CiAgIHN0cnVjdCBnZmNfZXhwciAqaGludDsKQEAgLTE3NDcsNiArMTc0Niw4
IEBAIHR5cGVkZWYgc3RydWN0IGdmY19vbXBfY2xhdXNlcwogICB1bnNpZ25lZCBjb250YWlu
c190ZWFtc19jb25zdHJ1Y3Q6MSwgdGFyZ2V0X2ZpcnN0X3N0X2lzX3RlYW1zX29yX21ldGE6
MTsKICAgdW5zaWduZWQgY29udGFpbmVkX2luX3RhcmdldF9jb25zdHJ1Y3Q6MSwgaW5kaXJl
Y3Q6MTsKICAgdW5zaWduZWQgZnVsbDoxLCBlcnJvbmVvdXM6MTsKKyAgdW5zaWduZWQgdGhy
ZWFkX2xpbWl0X3N0cmljdDoxLCBudW1fdGhyZWFkc19zdHJpY3Q6MTsKKyAgdW5zaWduZWQg
bnVtX3RlYW1zX2RpbXM6MSwgdGhyZWFkX2xpbWl0X2RpbXM6MSwgbnVtX3RocmVhZHNfZGlt
czoxOwogICBFTlVNX0JJVEZJRUxEIChnZmNfb21wX3NjaGVkX2tpbmQpIHNjaGVkX2tpbmQ6
MzsKICAgRU5VTV9CSVRGSUVMRCAoZ2ZjX29tcF9kZXZpY2VfdHlwZSkgZGV2aWNlX3R5cGU6
MjsKICAgRU5VTV9CSVRGSUVMRCAoZ2ZjX29tcF9tZW1vcmRlcikgbWVtb3JkZXI6MzsKZGlm
ZiAtLWdpdCBhL2djYy9mb3J0cmFuL29wZW5tcC5jYyBiL2djYy9mb3J0cmFuL29wZW5tcC5j
YwppbmRleCA2NDM1NTk3MWQ5ZS4uZmYwMjFhNjBmZTAgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0
cmFuL29wZW5tcC5jYworKysgYi9nY2MvZm9ydHJhbi9vcGVubXAuY2MKQEAgLTE4OCwxNSAr
MTg4LDExIEBAIGdmY19mcmVlX29tcF9jbGF1c2VzIChnZmNfb21wX2NsYXVzZXMgKmMpCiAg
ICAgZ2ZjX2ZyZWVfZXhwciAoYy0+aWZfZXhwcnNbaV0pOwogICBnZmNfZnJlZV9leHByIChj
LT5zZWxmX2V4cHIpOwogICBnZmNfZnJlZV9leHByIChjLT5maW5hbF9leHByKTsKLSAgZ2Zj
X2ZyZWVfZXhwciAoYy0+bnVtX3RocmVhZHMpOwogICBnZmNfZnJlZV9leHByIChjLT5jaHVu
a19zaXplKTsKICAgZ2ZjX2ZyZWVfZXhwciAoYy0+c2FmZWxlbl9leHByKTsKICAgZ2ZjX2Zy
ZWVfZXhwciAoYy0+c2ltZGxlbl9leHByKTsKLSAgZ2ZjX2ZyZWVfZXhwciAoYy0+bnVtX3Rl
YW1zX2xvd2VyKTsKLSAgZ2ZjX2ZyZWVfZXhwciAoYy0+bnVtX3RlYW1zX3VwcGVyKTsKICAg
Z2ZjX2ZyZWVfZXhwciAoYy0+ZGV2aWNlKTsKICAgZ2ZjX2ZyZWVfZXhwciAoYy0+ZHluX2dy
b3VwcHJpdmF0ZSk7Ci0gIGdmY19mcmVlX2V4cHIgKGMtPnRocmVhZF9saW1pdCk7CiAgIGdm
Y19mcmVlX2V4cHIgKGMtPmRpc3RfY2h1bmtfc2l6ZSk7CiAgIGdmY19mcmVlX2V4cHIgKGMt
PmdyYWluc2l6ZSk7CiAgIGdmY19mcmVlX2V4cHIgKGMtPmhpbnQpOwpAQCAtMjE2LDYgKzIx
Miw5IEBAIGdmY19mcmVlX29tcF9jbGF1c2VzIChnZmNfb21wX2NsYXVzZXMgKmMpCiAgIGZv
ciAoZW51bSBnZmNfb21wX2xpc3RfdHlwZSB0ID0gT01QX0xJU1RfRklSU1Q7IHQgPCBPTVBf
TElTVF9OVU07CiAgICAgICAgdCA9IGdmY19vbXBfbGlzdF90eXBlICh0ICsgMSkpCiAgICAg
Z2ZjX2ZyZWVfb21wX25hbWVsaXN0IChjLT5saXN0c1t0XSwgdCk7CisgIGdmY19mcmVlX2V4
cHJfbGlzdCAoYy0+bnVtX3RlYW1zX2xpc3QpOworICBnZmNfZnJlZV9leHByX2xpc3QgKGMt
PnRocmVhZF9saW1pdF9saXN0KTsKKyAgZ2ZjX2ZyZWVfZXhwcl9saXN0IChjLT5udW1fdGhy
ZWFkc19saXN0KTsKICAgZ2ZjX2ZyZWVfZXhwcl9saXN0IChjLT53YWl0X2xpc3QpOwogICBn
ZmNfZnJlZV9leHByX2xpc3QgKGMtPnRpbGVfbGlzdCk7CiAgIGdmY19mcmVlX2V4cHJfbGlz
dCAoYy0+c2l6ZXNfbGlzdCk7CkBAIC04NDYsOCArODQ1LDcgQEAgbWF0Y2hfb21wX29hY2Nf
ZXhwcl9saXN0IChjb25zdCBjaGFyICpzdHIsIGdmY19leHByX2xpc3QgKipsaXN0LAogCiAg
IG9sZF9sb2MgPSBnZmNfY3VycmVudF9sb2N1czsKIAotICBtID0gZ2ZjX21hdGNoIChzdHIp
OwotICBpZiAobSAhPSBNQVRDSF9ZRVMpCisgIGlmIChzdHIgJiYgKG0gPSBnZmNfbWF0Y2gg
KHN0cikpICE9IE1BVENIX1lFUykKICAgICByZXR1cm4gbTsKIAogICBmb3IgKDs7KQpAQCAt
NDEwNSwzMCArNDEwMywxNjEgQEAgZ2ZjX21hdGNoX29tcF9jbGF1c2VzIChnZmNfb21wX2Ns
YXVzZXMgKipjcCwgY29uc3Qgb21wX21hc2sgbWFzaywKIAkgICAgICBjb250aW51ZTsKIAkg
ICAgfQogCSAgaWYgKChtYXNrICYgT01QX0NMQVVTRV9OVU1fVEVBTVMpCi0JICAgICAgJiYg
KG0gPSBnZmNfbWF0Y2hfZHVwbF9jaGVjayAoIWMtPm51bV90ZWFtc191cHBlciwgIm51bV90
ZWFtcyIsCi0JCQkJCSAgICB0cnVlKSkgIT0gTUFUQ0hfTk8pCisJICAgICAgJiYgKG0gPSBn
ZmNfbWF0Y2hfZHVwbF9jaGVjayAoIWMtPm51bV90ZWFtc19saXN0LAorCQkJCQkgICAgIm51
bV90ZWFtcyIsIHRydWUpKSAhPSBNQVRDSF9OTykKIAkgICAgewogCSAgICAgIGlmIChtID09
IE1BVENIX0VSUk9SKQogCQlnb3RvIGVycm9yOwotCSAgICAgIGlmIChnZmNfbWF0Y2ggKCIl
ZSAiLCAmYy0+bnVtX3RlYW1zX3VwcGVyKSAhPSBNQVRDSF9ZRVMpCi0JCWdvdG8gZXJyb3I7
Ci0JICAgICAgaWYgKGdmY19wZWVrX2FzY2lpX2NoYXIgKCkgPT0gJzonKQorCSAgICAgIGdm
Y19leHByICpleHByOworCSAgICAgIGlmIChnZmNfbWF0Y2ggKCJkaW1zICggJWUgKSA6ICIs
ICZleHByKSA9PSBNQVRDSF9ZRVMKKwkJICAmJiBtYXRjaF9vbXBfb2FjY19leHByX2xpc3Qg
KE5VTEwsICZjLT5udW1fdGVhbXNfbGlzdCwKKwkJCQkJICAgICAgIGZhbHNlLCB0cnVlKSA9
PSBNQVRDSF9ZRVMpCisJCXsKKwkJICBpbnQgbnVtID0gMDsKKwkJICBnZmNfZXhwcl9saXN0
ICplbDsKKwkJICBmb3IgKGVsID0gYy0+bnVtX3RlYW1zX2xpc3Q7IGVsOyBlbCA9IGVsLT5u
ZXh0KQorCQkgICAgKytudW07CisJCSAgaWYgKCFnZmNfcmVzb2x2ZV9leHByIChleHByKQor
CQkgICAgICB8fCBleHByLT50cy50eXBlICE9IEJUX0lOVEVHRVIKKwkJICAgICAgfHwgZXhw
ci0+cmFuayAhPSAwCisJCSAgICAgIHx8IGV4cHItPmV4cHJfdHlwZSAhPSBFWFBSX0NPTlNU
QU5UCisJCSAgICAgIHx8IG1wel9zZ24gKGV4cHItPnZhbHVlLmludGVnZXIpIDw9IDApCisJ
CSAgICB7CisJCSAgICAgIGdmY19lcnJvciAoIkRJTVMgbXVzdCBiZSBhIGNvbnN0YW50IHBv
c2l0aXZlIGludGVnZXIgIgorCQkJCSAiYXQgJUwiLCAmZXhwci0+d2hlcmUpOworCQkgICAg
ICBnb3RvIGVycm9yOworCQkgICAgfQorCQkgIGlmIChtcHpfY21wX3NpIChleHByLT52YWx1
ZS5pbnRlZ2VyLCBudW0pICE9IDApCisJCSAgICB7CisJCSAgICAgIGdmY19lcnJvciAoIlRo
ZSBudW1iZXIgb2YgYXJndW1lbnRzICglZCkgbXVzdCBiZSB0aGUgc2FtZSIKKwkJCQkgIiBh
cyBzcGVjaWZpZWQgZm9yIERJTVMgYXQgJUwiLCBudW0sCisJCQkJICZleHByLT53aGVyZSk7
CisJCSAgICAgIGdvdG8gZXJyb3I7CisJCSAgICB9CisJCSAgYy0+bnVtX3RlYW1zX2RpbXMg
PSB0cnVlOworCQl9CisJICAgICAgZWxzZSBpZiAoZ2ZjX21hdGNoICgiJWUgIiwgJmV4cHIp
ID09IE1BVENIX1lFUykKIAkJewotCQkgIGMtPm51bV90ZWFtc19sb3dlciA9IGMtPm51bV90
ZWFtc191cHBlcjsKLQkJICBjLT5udW1fdGVhbXNfdXBwZXIgPSBOVUxMOwotCQkgIGlmIChn
ZmNfbWF0Y2ggKCI6ICVlICIsICZjLT5udW1fdGVhbXNfdXBwZXIpICE9IE1BVENIX1lFUykK
KwkJICBjLT5udW1fdGVhbXNfbGlzdCA9IGdmY19nZXRfZXhwcl9saXN0KCk7CisJCSAgYy0+
bnVtX3RlYW1zX2xpc3QtPmV4cHIgPSBleHByOworCQkgIGlmIChnZmNfcGVla19hc2NpaV9j
aGFyICgpID09ICc6JykKKwkJICAgIHsKKwkJICAgICAgZXhwciA9IE5VTEw7CisJCSAgICAg
IGlmIChnZmNfbWF0Y2ggKCI6ICVlICIsICZleHByKSAhPSBNQVRDSF9ZRVMpCisJCQlnb3Rv
IGVycm9yOworCQkgICAgICBjLT5udW1fdGVhbXNfbGlzdC0+bmV4dCA9IGdmY19nZXRfZXhw
cl9saXN0KCk7CisJCSAgICAgIGMtPm51bV90ZWFtc19saXN0LT5uZXh0LT5leHByID0gZXhw
cjsKKwkJICAgIH0KKwkJICBpZiAoZ2ZjX21hdGNoICgiKSAiKSAhPSBNQVRDSF9ZRVMpCiAJ
CSAgICBnb3RvIGVycm9yOwogCQl9Ci0JICAgICAgaWYgKGdmY19tYXRjaCAoIikgIikgIT0g
TUFUQ0hfWUVTKQotCQlnb3RvIGVycm9yOworCSAgICAgIGVsc2UKKwkJeworCQkgIGdmY19l
cnJvciAoIkV4cGVjdGVkIGVpdGhlciAlPFtsb3dlci1leHByIDogXSB1cHBlci1leHByJT4g
b3IgIgorCQkJICAgICAiJTxkaW1zKE4pOiBleHByLWxpc3QlPiBhdCAlQyIpOworCQkgIGdv
dG8gZXJyb3I7CisJCX0KIAkgICAgICBjb250aW51ZTsKIAkgICAgfQogCSAgaWYgKChtYXNr
ICYgT01QX0NMQVVTRV9OVU1fVEhSRUFEUykKLQkgICAgICAmJiAobSA9IGdmY19tYXRjaF9k
dXBsX2NoZWNrICghYy0+bnVtX3RocmVhZHMsICJudW1fdGhyZWFkcyIsIHRydWUsCi0JCQkJ
CSAgICAmYy0+bnVtX3RocmVhZHMpKSAhPSBNQVRDSF9OTykKKwkgICAgICAmJiAobSA9IGdm
Y19tYXRjaF9kdXBsX2NoZWNrICghYy0+bnVtX3RocmVhZHNfbGlzdCwKKwkJCQkJICAgICJu
dW1fdGhyZWFkcyIsIHRydWUsIE5VTEwpKQorCQkgICE9IE1BVENIX05PKQogCSAgICB7CisJ
ICAgICAgaW50IG5zdHJpY3QgPSAwLCBucmVsYXhlZCA9IDAsIG5kaW1zID0gMDsKKwkgICAg
ICBib29sIGZhaWwgPSBmYWxzZTsKKwkgICAgICBnZmNfZXhwciAqZGltcyA9IE5VTEw7CisJ
ICAgICAgbG9jdXMgb2xkX2xvYyA9IGdmY19jdXJyZW50X2xvY3VzOworCiAJICAgICAgaWYg
KG0gPT0gTUFUQ0hfRVJST1IpCiAJCWdvdG8gZXJyb3I7CisJICAgICAgd2hpbGUgKHRydWUp
CisJCXsKKwkJICBpZiAoZ2ZjX21hdGNoICgic3RyaWN0ICIpID09IE1BVENIX1lFUykKKwkJ
ICAgIG5zdHJpY3QrKzsKKwkJICBlbHNlIGlmIChnZmNfbWF0Y2ggKCJyZWxheGVkICIpID09
IE1BVENIX1lFUykKKwkJICAgIG5yZWxheGVkKys7CisJCSAgZWxzZSBpZiAoZ2ZjX21hdGNo
ICgiZGltcyAiKSA9PSBNQVRDSF9ZRVMpCisJCSAgICB7CisJCSAgICAgIG5kaW1zKys7CisJ
CSAgICAgIGlmIChkaW1zKQorCQkJZ2ZjX2ZyZWVfZXhwciAoZGltcyk7CisJCSAgICAgIGlm
IChnZmNfbWF0Y2ggKCIoICVlICkgIiwgJmRpbXMpICE9IE1BVENIX1lFUykKKwkJCWJyZWFr
OworCQkgICAgfQorCQkgIGVsc2UKKwkJICAgIHsKKwkJICAgICAgZmFpbCA9IHRydWU7CisJ
CSAgICAgIGJyZWFrOworCQkgICAgfQorCQkgIGlmIChnZmNfbWF0Y2ggKCIsICIpID09IE1B
VENIX1lFUykKKwkJICAgIGNvbnRpbnVlOworCQkgIGJyZWFrOworCQl9CisJICAgICAgaWYg
KGdmY19tYXRjaCAoIiA6ICIpID09IE1BVENIX1lFUykKKwkJeworCQkgIGlmIChuc3RyaWN0
ICsgbnJlbGF4ZWQgKyBuZGltcyA9PSAwIHx8IGZhaWwpCisJCSAgICB7CisJCSAgICAgIGdm
Y19lcnJvciAoIkV4cGVjdGVkIFNUUklDVCwgUkVMQVhFRCBvciBESU1TIG1vZGlmaWVyIGF0
ICIKKwkJCQkgIiVDIik7CisJCSAgICAgIGdvdG8gZXJyb3I7CisJCSAgICB9CisJCSAgZWxz
ZSBpZiAobnN0cmljdCArIG5yZWxheGVkID4gMSkKKwkJICAgIHsKKwkJICAgICAgZ2ZjX2Vy
cm9yICgiT25seSBvbmUgU1RSSUNUIG9yIFJFTEFYRUQgbW9kaWZpZXIgcGVybWl0dGVkIgor
CQkJCSAiIGF0ICVMIiwgJm9sZF9sb2MpOworCQkgICAgICBnb3RvIGVycm9yOworCQkgICAg
fQorCQkgIGlmIChuZGltcyA+IDEpCisJCSAgICB7CisJCSAgICAgIGdmY19lcnJvciAoIkR1
cGxpY2F0ZWQgRElNUyBleHByZXNzaW9uIGF0ICVMIiwKKwkJCQkgJmRpbXMtPndoZXJlKTsK
KwkJICAgICAgZ290byBlcnJvcjsKKwkJICAgIH0KKwkJICBpZiAobnN0cmljdCB8fCAoZGlt
cyAmJiAhbnJlbGF4ZWQpKQorCQkgICAgYy0+bnVtX3RocmVhZHNfc3RyaWN0ID0gdHJ1ZTsK
KwkJfQorCSAgICAgIGVsc2UKKwkJeworCQkgIGdmY19mcmVlX2V4cHIgKGRpbXMpOworCQkg
IGRpbXMgPSBOVUxMOworCQkgIGdmY19jdXJyZW50X2xvY3VzID0gb2xkX2xvYzsKKwkJfQor
CisJICAgICAgbSA9IG1hdGNoX29tcF9vYWNjX2V4cHJfbGlzdCAoTlVMTCwgJmMtPm51bV90
aHJlYWRzX2xpc3QsIGZhbHNlLAorCQkJCQkgICAgdHJ1ZSk7CisJICAgICAgaWYgKG0gIT0g
TUFUQ0hfWUVTKQorCQl7CisJCSAgZ2ZjX2Vycm9yICgiRXhwZWN0ZWQgYSBsaXN0IG9mIGlu
dGVnZXIgZXhwcmVzc2lvbnMgZm9sbG93ZWQgIgorCQkJICAgICAiYnkgYSAlPCklPiBhbmQg
b3B0aW9uYWxseSBwcmVjZWVkZWQgYnkgdGhlIFNUUklDVCwiCisJCQkgICAgICIgUkVMQVhF
RCwgb3IgRElNUyBhcyBtb2RpZmllcnMgYW5kIGEgY29sb24gYXQgJUMiKTsKKwkJICBnb3Rv
IGVycm9yOworCQl9CisJICAgICAgaWYgKGRpbXMpCisJCXsKKwkJICBpbnQgbnVtID0gMDsK
KwkJICBnZmNfZXhwcl9saXN0ICplbDsKKwkJICBmb3IgKGVsID0gYy0+bnVtX3RocmVhZHNf
bGlzdDsgZWw7IGVsID0gZWwtPm5leHQpCisJCSAgICArK251bTsKKwkJICBpZiAoIWdmY19y
ZXNvbHZlX2V4cHIgKGRpbXMpCisJCSAgICAgIHx8IGRpbXMtPnRzLnR5cGUgIT0gQlRfSU5U
RUdFUgorCQkgICAgICB8fCBkaW1zLT5yYW5rICE9IDAKKwkJICAgICAgfHwgZGltcy0+ZXhw
cl90eXBlICE9IEVYUFJfQ09OU1RBTlQKKwkJICAgICAgfHwgbXB6X3NnbiAoZGltcy0+dmFs
dWUuaW50ZWdlcikgPD0gMCkKKwkJICAgIHsKKwkJICAgICAgZ2ZjX2Vycm9yICgiRElNUyBt
dXN0IGJlIGEgY29uc3RhbnQgcG9zaXRpdmUgaW50ZWdlciAiCisJCQkJICJhdCAlTCIsICZk
aW1zLT53aGVyZSk7CisJCSAgICAgIGdvdG8gZXJyb3I7CisJCSAgICB9CisJCSAgaWYgKG1w
el9jbXBfc2kgKGRpbXMtPnZhbHVlLmludGVnZXIsIG51bSkgIT0gMCkKKwkJICAgIHsKKwkJ
ICAgICAgZ2ZjX2Vycm9yICgiVGhlIG51bWJlciBvZiBhcmd1bWVudHMgKCVkKSBtdXN0IGJl
IHRoZSBzYW1lIgorCQkJCSAiIGFzIHNwZWNpZmllZCBmb3IgRElNUyBhdCAlTCIsIG51bSwK
KwkJCQkgJmRpbXMtPndoZXJlKTsKKwkJICAgICAgZ290byBlcnJvcjsKKwkJICAgIH0KKwkJ
ICBjLT5udW1fdGhyZWFkc19kaW1zID0gdHJ1ZTsKKwkJfQogCSAgICAgIGNvbnRpbnVlOwog
CSAgICB9CiAJICBpZiAoKG1hc2sgJiBPTVBfQ0xBVVNFX05VTV9XT1JLRVJTKQpAQCAtNDUy
MCwxMiArNDY0OSwxMTAgQEAgZ2ZjX21hdGNoX29tcF9jbGF1c2VzIChnZmNfb21wX2NsYXVz
ZXMgKipjcCwgY29uc3Qgb21wX21hc2sgbWFzaywKIAkJCQkJCSBhbGxvd19kZXJpdmVkKSA9
PSBNQVRDSF9ZRVMpCiAJICAgIGNvbnRpbnVlOwogCSAgaWYgKChtYXNrICYgT01QX0NMQVVT
RV9USFJFQURfTElNSVQpCi0JICAgICAgJiYgKG0gPSBnZmNfbWF0Y2hfZHVwbF9jaGVjayAo
IWMtPnRocmVhZF9saW1pdCwgInRocmVhZF9saW1pdCIsCi0JCQkJCSAgICB0cnVlLCAmYy0+
dGhyZWFkX2xpbWl0KSkKLQkJICE9IE1BVENIX05PKQorCSAgICAgICYmIChtID0gZ2ZjX21h
dGNoX2R1cGxfY2hlY2sgKCFjLT50aHJlYWRfbGltaXRfbGlzdCwgInRocmVhZF9saW1pdCIs
CisJCQkJCSAgICB0cnVlLCBOVUxMKSkgIT0gTUFUQ0hfTk8pCiAJICAgIHsKKwkgICAgICBp
bnQgbnN0cmljdCA9IDAsIG5yZWxheGVkID0gMCwgbmRpbXMgPSAwOworCSAgICAgIGJvb2wg
ZmFpbCA9IGZhbHNlOworCSAgICAgIGdmY19leHByICpkaW1zID0gTlVMTDsKKwkgICAgICBs
b2N1cyBvbGRfbG9jID0gZ2ZjX2N1cnJlbnRfbG9jdXM7CisKIAkgICAgICBpZiAobSA9PSBN
QVRDSF9FUlJPUikKIAkJZ290byBlcnJvcjsKKwkgICAgICB3aGlsZSAodHJ1ZSkKKwkJewor
CQkgIGlmIChnZmNfbWF0Y2ggKCJzdHJpY3QgIikgPT0gTUFUQ0hfWUVTKQorCQkgICAgbnN0
cmljdCsrOworCQkgIGVsc2UgaWYgKGdmY19tYXRjaCAoInJlbGF4ZWQgIikgPT0gTUFUQ0hf
WUVTKQorCQkgICAgbnJlbGF4ZWQrKzsKKwkJICBlbHNlIGlmIChnZmNfbWF0Y2ggKCJkaW1z
ICIpID09IE1BVENIX1lFUykKKwkJICAgIHsKKwkJICAgICAgbmRpbXMrKzsKKwkJICAgICAg
aWYgKGRpbXMpCisJCQlnZmNfZnJlZV9leHByIChkaW1zKTsKKwkJICAgICAgaWYgKGdmY19t
YXRjaCAoIiggJWUgKSAiLCAmZGltcykgIT0gTUFUQ0hfWUVTKQorCQkJYnJlYWs7CisJCSAg
ICB9CisJCSAgZWxzZQorCQkgICAgeworCQkgICAgICBmYWlsID0gdHJ1ZTsKKwkJICAgICAg
YnJlYWs7CisJCSAgICB9CisJCSAgaWYgKGdmY19tYXRjaCAoIiwgIikgPT0gTUFUQ0hfWUVT
KQorCQkgICAgY29udGludWU7CisJCSAgYnJlYWs7CisJCX0KKwkgICAgICBpZiAoZ2ZjX21h
dGNoICgiIDogIikgPT0gTUFUQ0hfWUVTKQorCQl7CisJCSAgaWYgKG5zdHJpY3QgKyBucmVs
YXhlZCArIG5kaW1zID09IDAgfHwgZmFpbCkKKwkJICAgIHsKKwkJICAgICAgZ2ZjX2Vycm9y
ICgiRXhwZWN0ZWQgU1RSSUNULCBSRUxBWEVEIG9yIERJTVMgbW9kaWZpZXIgYXQgIgorCQkJ
CSAiJUMiKTsKKwkJICAgICAgZ290byBlcnJvcjsKKwkJICAgIH0KKwkJICBlbHNlIGlmIChu
c3RyaWN0ICsgbnJlbGF4ZWQgPiAxKQorCQkgICAgeworCQkgICAgICBnZmNfZXJyb3IgKCJP
bmx5IG9uZSBTVFJJQ1Qgb3IgUkVMQVhFRCBtb2RpZmllciBwZXJtaXR0ZWQiCisJCQkJICIg
YXQgJUwiLCAmb2xkX2xvYyk7CisJCSAgICAgIGdvdG8gZXJyb3I7CisJCSAgICB9CisJCSAg
aWYgKG5kaW1zID4gMSkKKwkJICAgIHsKKwkJICAgICAgZ2ZjX2Vycm9yICgiRHVwbGljYXRl
ZCBESU1TIGV4cHJlc3Npb24gYXQgJUwiLAorCQkJCSAmZGltcy0+d2hlcmUpOworCQkgICAg
ICBnb3RvIGVycm9yOworCQkgICAgfQorCQl9CisJICAgICAgZWxzZQorCQl7CisJCSAgZ2Zj
X2ZyZWVfZXhwciAoZGltcyk7CisJCSAgZGltcyA9IE5VTEw7CisJCSAgZ2ZjX2N1cnJlbnRf
bG9jdXMgPSBvbGRfbG9jOworCQl9CisKKwkgICAgICBtID0gbWF0Y2hfb21wX29hY2NfZXhw
cl9saXN0IChOVUxMLCAmYy0+dGhyZWFkX2xpbWl0X2xpc3QsCisJCQkJCSAgICBmYWxzZSwg
dHJ1ZSk7CisJICAgICAgaWYgKG0gIT0gTUFUQ0hfWUVTKQorCQl7CisJCSAgZ2ZjX2Vycm9y
ICgiRXhwZWN0ZWQgYSBsaXN0IG9mIGludGVnZXIgZXhwcmVzc2lvbnMgZm9sbG93ZWQgIgor
CQkJICAgICAiYnkgYSAlPCklPiBhbmQgb3B0aW9uYWxseSBwcmVjZWVkZWQgYnkgdGhlIFNU
UklDVCwiCisJCQkgICAgICIgUkVMQVhFRCwgb3IgRElNUyBhcyBtb2RpZmllcnMgYW5kIGEg
Y29sb24gYXQgJUMiKTsKKwkJICBnb3RvIGVycm9yOworCQl9CisJICAgICAgYy0+dGhyZWFk
X2xpbWl0X3N0cmljdCA9IChuc3RyaWN0ICE9IDApIHx8IChkaW1zICYmICFucmVsYXhlZCk7
CisKKwkgICAgICBpZiAoIWRpbXMgJiYgYy0+dGhyZWFkX2xpbWl0X2xpc3QtPm5leHQpCisJ
CXsKKwkJICBnZmNfZXJyb3IgKCJXaXRob3V0IHRoZSBESU0gbW9kaWZpZXIsIG9ubHkgYSBz
aW5nbGUgaW50ZWdlciAiCisJCQkgICAgICJleHByZXNzaW9uIG1heSBiZSBzcGVjaWZpZWQg
YXQgJUwiLAorCQkJICAgICAmYy0+dGhyZWFkX2xpbWl0X2xpc3QtPm5leHQtPmV4cHItPndo
ZXJlKTsKKwkJICBnb3RvIGVycm9yOworCQl9CisJICAgICAgZWxzZSBpZiAoZGltcykKKwkJ
eworCQkgIGludCBudW0gPSAwOworCQkgIGdmY19leHByX2xpc3QgKmVsOworCQkgIGZvciAo
ZWwgPSBjLT50aHJlYWRfbGltaXRfbGlzdDsgZWw7IGVsID0gZWwtPm5leHQpCisJCSAgICAr
K251bTsKKwkJICBpZiAoIWdmY19yZXNvbHZlX2V4cHIgKGRpbXMpCisJCSAgICAgIHx8IGRp
bXMtPnRzLnR5cGUgIT0gQlRfSU5URUdFUgorCQkgICAgICB8fCBkaW1zLT5yYW5rICE9IDAK
KwkJICAgICAgfHwgZGltcy0+ZXhwcl90eXBlICE9IEVYUFJfQ09OU1RBTlQKKwkJICAgICAg
fHwgbXB6X3NnbiAoZGltcy0+dmFsdWUuaW50ZWdlcikgPD0gMCkKKwkJICAgIHsKKwkJICAg
ICAgZ2ZjX2Vycm9yICgiRElNUyBtdXN0IGJlIGEgY29uc3RhbnQgcG9zaXRpdmUgaW50ZWdl
ciAiCisJCQkJICJhdCAlTCIsICZkaW1zLT53aGVyZSk7CisJCSAgICAgIGdvdG8gZXJyb3I7
CisJCSAgICB9CisJCSAgaWYgKG1wel9jbXBfc2kgKGRpbXMtPnZhbHVlLmludGVnZXIsIG51
bSkgIT0gMCkKKwkJICAgIHsKKwkJICAgICAgZ2ZjX2Vycm9yICgiVGhlIG51bWJlciBvZiBh
cmd1bWVudHMgKCVkKSBtdXN0IGJlIHRoZSBzYW1lIgorCQkJCSAiIGFzIHNwZWNpZmllZCBm
b3IgRElNUyBhdCAlTCIsIG51bSwKKwkJCQkgJmRpbXMtPndoZXJlKTsKKwkJICAgICAgZ290
byBlcnJvcjsKKwkJICAgIH0KKwkJICBjLT50aHJlYWRfbGltaXRfZGltcyA9IHRydWU7CisJ
CX0KIAkgICAgICBjb250aW51ZTsKIAkgICAgfQogCSAgaWYgKChtYXNrICYgT01QX0NMQVVT
RV9USFJFQURTKQpAQCAtMTAyOTYsOCArMTA1MjMsMTAgQEAgcmVzb2x2ZV9vbXBfY2xhdXNl
cyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19vbXBfY2xhdXNlcyAqb21wX2NsYXVzZXMsCiAJICAm
ZXhwci0+d2hlcmUpOwogICAgICAgaWZfd2l0aG91dF9tb2QgPSB0cnVlOwogICAgIH0KLSAg
aWYgKG9tcF9jbGF1c2VzLT5udW1fdGhyZWFkcykKLSAgICByZXNvbHZlX3Bvc2l0aXZlX2lu
dF9leHByIChvbXBfY2xhdXNlcy0+bnVtX3RocmVhZHMsICJOVU1fVEhSRUFEUyIpOworCisg
IGZvciAoZWwgPSBvbXBfY2xhdXNlcy0+bnVtX3RocmVhZHNfbGlzdDsgZWw7IGVsID0gZWwt
Pm5leHQpCisgICAgcmVzb2x2ZV9wb3NpdGl2ZV9pbnRfZXhwciAoZWwtPmV4cHIsICJOVU1f
VEhSRUFEUyIpOworCiAgIGlmIChvbXBfY2xhdXNlcy0+ZHluX2dyb3VwcHJpdmF0ZSkKICAg
ICByZXNvbHZlX25vbm5lZ2F0aXZlX2ludF9leHByIChvbXBfY2xhdXNlcy0+ZHluX2dyb3Vw
cHJpdmF0ZSwKIAkJCQkgICJEWU5fR1JPVVBQUklWQVRFIik7CkBAIC0xMTEwMCwxOCArMTEz
MjksMTggQEAgcmVzb2x2ZV9vbXBfY2xhdXNlcyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19vbXBf
Y2xhdXNlcyAqb21wX2NsYXVzZXMsCiAgICAgcmVzb2x2ZV9wb3NpdGl2ZV9pbnRfZXhwciAo
b21wX2NsYXVzZXMtPnNhZmVsZW5fZXhwciwgIlNBRkVMRU4iKTsKICAgaWYgKG9tcF9jbGF1
c2VzLT5zaW1kbGVuX2V4cHIpCiAgICAgcmVzb2x2ZV9wb3NpdGl2ZV9pbnRfZXhwciAob21w
X2NsYXVzZXMtPnNpbWRsZW5fZXhwciwgIlNJTURMRU4iKTsKLSAgaWYgKG9tcF9jbGF1c2Vz
LT5udW1fdGVhbXNfbG93ZXIpCi0gICAgcmVzb2x2ZV9wb3NpdGl2ZV9pbnRfZXhwciAob21w
X2NsYXVzZXMtPm51bV90ZWFtc19sb3dlciwgIk5VTV9URUFNUyIpOwotICBpZiAob21wX2Ns
YXVzZXMtPm51bV90ZWFtc191cHBlcikKLSAgICByZXNvbHZlX3Bvc2l0aXZlX2ludF9leHBy
IChvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX3VwcGVyLCAiTlVNX1RFQU1TIik7Ci0gIGlmIChv
bXBfY2xhdXNlcy0+bnVtX3RlYW1zX2xvd2VyCi0gICAgICAmJiBvbXBfY2xhdXNlcy0+bnVt
X3RlYW1zX2xvd2VyLT5leHByX3R5cGUgPT0gRVhQUl9DT05TVEFOVAotICAgICAgJiYgb21w
X2NsYXVzZXMtPm51bV90ZWFtc191cHBlci0+ZXhwcl90eXBlID09IEVYUFJfQ09OU1RBTlQK
LSAgICAgICYmIG1wel9jbXAgKG9tcF9jbGF1c2VzLT5udW1fdGVhbXNfbG93ZXItPnZhbHVl
LmludGVnZXIsCi0JCSAgb21wX2NsYXVzZXMtPm51bV90ZWFtc191cHBlci0+dmFsdWUuaW50
ZWdlcikgPiAwKQorICBmb3IgKGVsID0gb21wX2NsYXVzZXMtPm51bV90ZWFtc19saXN0OyBl
bDsgZWwgPSBlbC0+bmV4dCkKKyAgICByZXNvbHZlX3Bvc2l0aXZlX2ludF9leHByIChlbC0+
ZXhwciwgIk5VTV9URUFNUyIpOworICBpZiAob21wX2NsYXVzZXMtPm51bV90ZWFtc19saXN0
CisgICAgICAmJiBvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX2xpc3QtPm5leHQKKyAgICAgICYm
ICFvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX2RpbXMKKyAgICAgICYmIG9tcF9jbGF1c2VzLT5u
dW1fdGVhbXNfbGlzdC0+ZXhwci0+ZXhwcl90eXBlID09IEVYUFJfQ09OU1RBTlQKKyAgICAg
ICYmIG9tcF9jbGF1c2VzLT5udW1fdGVhbXNfbGlzdC0+bmV4dC0+ZXhwci0+ZXhwcl90eXBl
ID09IEVYUFJfQ09OU1RBTlQKKyAgICAgICYmIG1wel9jbXAgKG9tcF9jbGF1c2VzLT5udW1f
dGVhbXNfbGlzdC0+ZXhwci0+dmFsdWUuaW50ZWdlciwKKwkJICBvbXBfY2xhdXNlcy0+bnVt
X3RlYW1zX2xpc3QtPm5leHQtPmV4cHItPnZhbHVlLmludGVnZXIpID4gMCkKICAgICBnZmNf
d2FybmluZyAoT1BUX1dvcGVubXAsICJOVU1fVEVBTVMgbG93ZXIgYm91bmQgYXQgJUwgbGFy
Z2VyIHRoYW4gdXBwZXIgIgotCQkgImJvdW5kIGF0ICVMIiwgJm9tcF9jbGF1c2VzLT5udW1f
dGVhbXNfbG93ZXItPndoZXJlLAotCQkgJm9tcF9jbGF1c2VzLT5udW1fdGVhbXNfdXBwZXIt
PndoZXJlKTsKKwkJICJib3VuZCBhdCAlTCIsICZvbXBfY2xhdXNlcy0+bnVtX3RlYW1zX2xp
c3QtPmV4cHItPndoZXJlLAorCQkgJm9tcF9jbGF1c2VzLT5udW1fdGVhbXNfbGlzdC0+bmV4
dC0+ZXhwci0+d2hlcmUpOwogICBpZiAob21wX2NsYXVzZXMtPmRldmljZSkKICAgICByZXNv
bHZlX3NjYWxhcl9pbnRfZXhwciAob21wX2NsYXVzZXMtPmRldmljZSwgIkRFVklDRSIpOwog
ICBpZiAob21wX2NsYXVzZXMtPmZpbHRlcikKQEAgLTExMTM1LDggKzExMzY0LDggQEAgcmVz
b2x2ZV9vbXBfY2xhdXNlcyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19vbXBfY2xhdXNlcyAqb21w
X2NsYXVzZXMsCiAJZ2ZjX2Vycm9yICgiRElTVF9TQ0hFRFVMRSBjbGF1c2UncyBjaHVua19z
aXplIGF0ICVMIHJlcXVpcmVzICIKIAkJICAgImEgc2NhbGFyIElOVEVHRVIgZXhwcmVzc2lv
biIsICZleHByLT53aGVyZSk7CiAgICAgfQotICBpZiAob21wX2NsYXVzZXMtPnRocmVhZF9s
aW1pdCkKLSAgICByZXNvbHZlX3Bvc2l0aXZlX2ludF9leHByIChvbXBfY2xhdXNlcy0+dGhy
ZWFkX2xpbWl0LCAiVEhSRUFEX0xJTUlUIik7CisgIGZvciAoZWwgPSBvbXBfY2xhdXNlcy0+
dGhyZWFkX2xpbWl0X2xpc3Q7IGVsOyBlbCA9IGVsLT5uZXh0KQorICAgIHJlc29sdmVfcG9z
aXRpdmVfaW50X2V4cHIgKGVsLT5leHByLCAiVEhSRUFEX0xJTUlUIik7CiAgIGlmIChvbXBf
Y2xhdXNlcy0+Z3JhaW5zaXplKQogICAgIHJlc29sdmVfcG9zaXRpdmVfaW50X2V4cHIgKG9t
cF9jbGF1c2VzLT5ncmFpbnNpemUsICJHUkFJTlNJWkUiKTsKICAgaWYgKG9tcF9jbGF1c2Vz
LT5udW1fdGFza3MpCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2Mg
Yi9nY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MKaW5kZXggYWE0ZThlYmZhMjMuLjM4MWZi
NDhkMDA4IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MKKysrIGIv
Z2NjL2ZvcnRyYW4vdHJhbnMtb3Blbm1wLmNjCkBAIC01NjYwLDEyICs1NjYwLDI1IEBAIGdm
Y190cmFuc19vbXBfY2xhdXNlcyAoc3RtdGJsb2NrX3QgKmJsb2NrLCBnZmNfb21wX2NsYXVz
ZXMgKmNsYXVzZXMsCiAgICAgICBvbXBfY2xhdXNlcyA9IGdmY190cmFuc19hZGRfY2xhdXNl
IChjLCBvbXBfY2xhdXNlcyk7CiAgICAgfQogCi0gIGlmIChjbGF1c2VzLT5udW1fdGhyZWFk
cykKKyAgaWYgKGNsYXVzZXMtPm51bV90aHJlYWRzX2xpc3QpCiAgICAgewogICAgICAgdHJl
ZSBudW1fdGhyZWFkczsKIAorICAgICAgaWYgKGNsYXVzZXMtPm51bV90aHJlYWRzX2RpbXMp
CisJc29ycnlfYXQgKGdmY19nZXRfbG9jYXRpb24gKCZjbGF1c2VzLT5udW1fdGhyZWFkc19s
aXN0LT5leHByLT53aGVyZSksCisJCSAgIiU8bnVtX3RocmVhZHMlPiB3aXRoICU8ZGltcyU+
IG1vZGlmaWVyIik7CisgICAgICBlbHNlIGlmIChjbGF1c2VzLT5udW1fdGhyZWFkc19zdHJp
Y3QpCisJc29ycnlfYXQgKGdmY19nZXRfbG9jYXRpb24gKCZjbGF1c2VzLT5udW1fdGhyZWFk
c19saXN0LT5leHByLT53aGVyZSksCisJCSAgIiU8bnVtX3RocmVhZHMlPiB3aXRoICU8c3Ry
aWN0JT4gbW9kaWZpZXIiKTsKKyAgICAgIGVsc2UgaWYgKGNsYXVzZXMtPm51bV90aHJlYWRz
X2xpc3QtPm5leHQpCisJeworCSAgZ2ZjX2V4cHIgKmV4cHIgPSBjbGF1c2VzLT5udW1fdGhy
ZWFkc19saXN0LT5uZXh0LT5leHByOworCSAgc29ycnlfYXQgKGdmY19nZXRfbG9jYXRpb24g
KCZleHByLT53aGVyZSksCisJCSAgICAiJTxudW1fdGhyZWFkcyU+IHdpdGggbW9yZSB0aGFu
IG9uZSBhcmd1bWVudCIpOworCX0KKwogICAgICAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7
Ci0gICAgICBnZmNfY29udl9leHByICgmc2UsIGNsYXVzZXMtPm51bV90aHJlYWRzKTsKKyAg
ICAgIGdmY19jb252X2V4cHIgKCZzZSwgY2xhdXNlcy0+bnVtX3RocmVhZHNfbGlzdC0+ZXhw
cik7CiAgICAgICBnZmNfYWRkX2Jsb2NrX3RvX2Jsb2NrIChibG9jaywgJnNlLnByZSk7CiAg
ICAgICBudW1fdGhyZWFkcyA9IGdmY19ldmFsdWF0ZV9ub3cgKHNlLmV4cHIsIGJsb2NrKTsK
ICAgICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKGJsb2NrLCAmc2UucG9zdCk7CkBAIC01
OTcwLDI0ICs1OTgzLDMxIEBAIGdmY190cmFuc19vbXBfY2xhdXNlcyAoc3RtdGJsb2NrX3Qg
KmJsb2NrLCBnZmNfb21wX2NsYXVzZXMgKmNsYXVzZXMsCiAJfQogICAgIH0KIAotICBpZiAo
Y2xhdXNlcy0+bnVtX3RlYW1zX3VwcGVyKQorICBpZiAoY2xhdXNlcy0+bnVtX3RlYW1zX2xp
c3QpCiAgICAgewogICAgICAgdHJlZSBudW1fdGVhbXNfbG93ZXIgPSBOVUxMX1RSRUUsIG51
bV90ZWFtc191cHBlcjsKIAotICAgICAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7Ci0gICAg
ICBnZmNfY29udl9leHByICgmc2UsIGNsYXVzZXMtPm51bV90ZWFtc191cHBlcik7Ci0gICAg
ICBnZmNfYWRkX2Jsb2NrX3RvX2Jsb2NrIChibG9jaywgJnNlLnByZSk7Ci0gICAgICBudW1f
dGVhbXNfdXBwZXIgPSBnZmNfZXZhbHVhdGVfbm93IChzZS5leHByLCBibG9jayk7Ci0gICAg
ICBnZmNfYWRkX2Jsb2NrX3RvX2Jsb2NrIChibG9jaywgJnNlLnBvc3QpOworICAgICAgaWYg
KGNsYXVzZXMtPm51bV90ZWFtc19kaW1zKQorCXNvcnJ5X2F0IChnZmNfZ2V0X2xvY2F0aW9u
ICgmY2xhdXNlcy0+bnVtX3RlYW1zX2xpc3QtPmV4cHItPndoZXJlKSwKKwkJICAgICIlPG51
bV90ZWFtcyU+IHdpdGggJTxkaW1zJT4gbW9kaWZpZXIiKTsKIAotICAgICAgaWYgKGNsYXVz
ZXMtPm51bV90ZWFtc19sb3dlcikKKyAgICAgIGdmY19leHByX2xpc3QgKmVsID0gY2xhdXNl
cy0+bnVtX3RlYW1zX2xpc3Q7CisgICAgICBpZiAoZWwtPm5leHQpCiAJewogCSAgZ2ZjX2lu
aXRfc2UgKCZzZSwgTlVMTCk7Ci0JICBnZmNfY29udl9leHByICgmc2UsIGNsYXVzZXMtPm51
bV90ZWFtc19sb3dlcik7CisJICBnZmNfY29udl9leHByICgmc2UsIGVsLT5leHByKTsKIAkg
IGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKGJsb2NrLCAmc2UucHJlKTsKIAkgIG51bV90ZWFt
c19sb3dlciA9IGdmY19ldmFsdWF0ZV9ub3cgKHNlLmV4cHIsIGJsb2NrKTsKIAkgIGdmY19h
ZGRfYmxvY2tfdG9fYmxvY2sgKGJsb2NrLCAmc2UucG9zdCk7CisJICBlbCA9IGVsLT5uZXh0
OwogCX0KKworICAgICAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7CisgICAgICBnZmNfY29u
dl9leHByICgmc2UsIGVsLT5leHByKTsKKyAgICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sg
KGJsb2NrLCAmc2UucHJlKTsKKyAgICAgIG51bV90ZWFtc191cHBlciA9IGdmY19ldmFsdWF0
ZV9ub3cgKHNlLmV4cHIsIGJsb2NrKTsKKyAgICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sg
KGJsb2NrLCAmc2UucG9zdCk7CisKICAgICAgIGMgPSBidWlsZF9vbXBfY2xhdXNlIChnZmNf
Z2V0X2xvY2F0aW9uICgmd2hlcmUpLCBPTVBfQ0xBVVNFX05VTV9URUFNUyk7CiAgICAgICBP
TVBfQ0xBVVNFX05VTV9URUFNU19MT1dFUl9FWFBSIChjKSA9IG51bV90ZWFtc19sb3dlcjsK
ICAgICAgIE9NUF9DTEFVU0VfTlVNX1RFQU1TX1VQUEVSX0VYUFIgKGMpID0gbnVtX3RlYW1z
X3VwcGVyOwpAQCAtNjAxMywxMiArNjAzMywxOCBAQCBnZmNfdHJhbnNfb21wX2NsYXVzZXMg
KHN0bXRibG9ja190ICpibG9jaywgZ2ZjX29tcF9jbGF1c2VzICpjbGF1c2VzLAogICAgICAg
b21wX2NsYXVzZXMgPSBnZmNfdHJhbnNfYWRkX2NsYXVzZSAoYywgb21wX2NsYXVzZXMpOwog
ICAgIH0KIAotICBpZiAoY2xhdXNlcy0+dGhyZWFkX2xpbWl0KQorICBpZiAoY2xhdXNlcy0+
dGhyZWFkX2xpbWl0X2xpc3QpCiAgICAgewogICAgICAgdHJlZSB0aHJlYWRfbGltaXQ7CiAK
KyAgICAgIGlmIChjbGF1c2VzLT50aHJlYWRfbGltaXRfZGltcykKKwlzb3JyeV9hdCAoZ2Zj
X2dldF9sb2NhdGlvbiAoJmNsYXVzZXMtPnRocmVhZF9saW1pdF9saXN0LT5leHByLT53aGVy
ZSksCisJCSAgICAiJTx0aHJlYWRfbGltaXQlPiB3aXRoICU8ZGltcyU+IG1vZGlmaWVyIik7
CisgICAgICBlbHNlIGlmIChjbGF1c2VzLT50aHJlYWRfbGltaXRfc3RyaWN0KQorCXNvcnJ5
X2F0IChnZmNfZ2V0X2xvY2F0aW9uICgmY2xhdXNlcy0+dGhyZWFkX2xpbWl0X2xpc3QtPmV4
cHItPndoZXJlKSwKKwkJICAgICIlPHRocmVhZF9saW1pdCU+IHdpdGggJTxzdHJpY3QlPiBt
b2RpZmllciIpOwogICAgICAgZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7Ci0gICAgICBnZmNf
Y29udl9leHByICgmc2UsIGNsYXVzZXMtPnRocmVhZF9saW1pdCk7CisgICAgICBnZmNfY29u
dl9leHByICgmc2UsIGNsYXVzZXMtPnRocmVhZF9saW1pdF9saXN0LT5leHByKTsKICAgICAg
IGdmY19hZGRfYmxvY2tfdG9fYmxvY2sgKGJsb2NrLCAmc2UucHJlKTsKICAgICAgIHRocmVh
ZF9saW1pdCA9IGdmY19ldmFsdWF0ZV9ub3cgKHNlLmV4cHIsIGJsb2NrKTsKICAgICAgIGdm
Y19hZGRfYmxvY2tfdG9fYmxvY2sgKGJsb2NrLCAmc2UucG9zdCk7CkBAIC04NDcxLDggKzg0
OTcsMTIgQEAgZ2ZjX3NwbGl0X29tcF9jbGF1c2VzIChnZmNfY29kZSAqY29kZSwKIAkgICAg
PSBjb2RlLT5leHQub21wX2NsYXVzZXMtPmxpc3RzW09NUF9MSVNUX0hBU19ERVZJQ0VfQURE
Ul07CiAJICBjbGF1c2VzYVtHRkNfT01QX1NQTElUX1RBUkdFVF0uZGV2aWNlCiAJICAgID0g
Y29kZS0+ZXh0Lm9tcF9jbGF1c2VzLT5kZXZpY2U7Ci0JICBjbGF1c2VzYVtHRkNfT01QX1NQ
TElUX1RBUkdFVF0udGhyZWFkX2xpbWl0Ci0JICAgID0gY29kZS0+ZXh0Lm9tcF9jbGF1c2Vz
LT50aHJlYWRfbGltaXQ7CisJICBjbGF1c2VzYVtHRkNfT01QX1NQTElUX1RBUkdFVF0udGhy
ZWFkX2xpbWl0X2xpc3QKKwkgICAgPSBjb2RlLT5leHQub21wX2NsYXVzZXMtPnRocmVhZF9s
aW1pdF9saXN0OworCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9UQVJHRVRdLnRocmVhZF9s
aW1pdF9zdHJpY3QKKwkgICAgPSBjb2RlLT5leHQub21wX2NsYXVzZXMtPnRocmVhZF9saW1p
dF9zdHJpY3Q7CisJICBjbGF1c2VzYVtHRkNfT01QX1NQTElUX1RBUkdFVF0udGhyZWFkX2xp
bWl0X2RpbXMKKwkgICAgPSBjb2RlLT5leHQub21wX2NsYXVzZXMtPnRocmVhZF9saW1pdF9k
aW1zOwogCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9UQVJHRVRdLmxpc3RzW09NUF9MSVNU
X1VTRVNfQUxMT0NBVE9SU10KIAkgICAgPSBjb2RlLT5leHQub21wX2NsYXVzZXMtPmxpc3Rz
W09NUF9MSVNUX1VTRVNfQUxMT0NBVE9SU107CiAJICBmb3IgKGludCBpID0gMDsgaSA8IE9N
UF9ERUZBVUxUTUFQX0NBVF9OVU07IGkrKykKQEAgLTg0OTEsMTIgKzg1MjEsMTYgQEAgZ2Zj
X3NwbGl0X29tcF9jbGF1c2VzIChnZmNfY29kZSAqY29kZSwKICAgICAgIGlmIChtYXNrICYg
R0ZDX09NUF9NQVNLX1RFQU1TKQogCXsKIAkgIC8qIEZpcnN0IHRoZSBjbGF1c2VzIHRoYXQg
YXJlIHVuaXF1ZSB0byBzb21lIGNvbnN0cnVjdHMuICAqLwotCSAgY2xhdXNlc2FbR0ZDX09N
UF9TUExJVF9URUFNU10ubnVtX3RlYW1zX2xvd2VyCi0JICAgID0gY29kZS0+ZXh0Lm9tcF9j
bGF1c2VzLT5udW1fdGVhbXNfbG93ZXI7Ci0JICBjbGF1c2VzYVtHRkNfT01QX1NQTElUX1RF
QU1TXS5udW1fdGVhbXNfdXBwZXIKLQkgICAgPSBjb2RlLT5leHQub21wX2NsYXVzZXMtPm51
bV90ZWFtc191cHBlcjsKLQkgIGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRfVEVBTVNdLnRocmVh
ZF9saW1pdAotCSAgICA9IGNvZGUtPmV4dC5vbXBfY2xhdXNlcy0+dGhyZWFkX2xpbWl0Owor
CSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9URUFNU10ubnVtX3RlYW1zX2xpc3QKKwkgICAg
PSBjb2RlLT5leHQub21wX2NsYXVzZXMtPm51bV90ZWFtc19saXN0OworCSAgY2xhdXNlc2Fb
R0ZDX09NUF9TUExJVF9URUFNU10ubnVtX3RlYW1zX2RpbXMKKwkgICAgPSBjb2RlLT5leHQu
b21wX2NsYXVzZXMtPm51bV90ZWFtc19kaW1zOworCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJ
VF9URUFNU10udGhyZWFkX2xpbWl0X2xpc3QKKwkgICAgPSBjb2RlLT5leHQub21wX2NsYXVz
ZXMtPnRocmVhZF9saW1pdF9saXN0OworCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9URUFN
U10udGhyZWFkX2xpbWl0X3N0cmljdAorCSAgICA9IGNvZGUtPmV4dC5vbXBfY2xhdXNlcy0+
dGhyZWFkX2xpbWl0X3N0cmljdDsKKwkgIGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRfVEVBTVNd
LnRocmVhZF9saW1pdF9kaW1zCisJICAgID0gY29kZS0+ZXh0Lm9tcF9jbGF1c2VzLT50aHJl
YWRfbGltaXRfZGltczsKIAkgIC8qIFNoYXJlZCBhbmQgZGVmYXVsdCBjbGF1c2VzIGFyZSBh
bGxvd2VkIG9uIHBhcmFsbGVsLCB0ZWFtcwogCSAgICAgYW5kIHRhc2tsb29wLiAgKi8KIAkg
IGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRfVEVBTVNdLmxpc3RzW09NUF9MSVNUX1NIQVJFRF0K
QEAgLTg1MjYsOCArODU2MCwxMiBAQCBnZmNfc3BsaXRfb21wX2NsYXVzZXMgKGdmY19jb2Rl
ICpjb2RlLAogCSAgLyogRmlyc3QgdGhlIGNsYXVzZXMgdGhhdCBhcmUgdW5pcXVlIHRvIHNv
bWUgY29uc3RydWN0cy4gICovCiAJICBjbGF1c2VzYVtHRkNfT01QX1NQTElUX1BBUkFMTEVM
XS5saXN0c1tPTVBfTElTVF9DT1BZSU5dCiAJICAgID0gY29kZS0+ZXh0Lm9tcF9jbGF1c2Vz
LT5saXN0c1tPTVBfTElTVF9DT1BZSU5dOwotCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9Q
QVJBTExFTF0ubnVtX3RocmVhZHMKLQkgICAgPSBjb2RlLT5leHQub21wX2NsYXVzZXMtPm51
bV90aHJlYWRzOworCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9QQVJBTExFTF0ubnVtX3Ro
cmVhZHNfbGlzdAorCSAgICA9IGNvZGUtPmV4dC5vbXBfY2xhdXNlcy0+bnVtX3RocmVhZHNf
bGlzdDsKKwkgIGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRfUEFSQUxMRUxdLm51bV90aHJlYWRz
X3N0cmljdAorCSAgICA9IGNvZGUtPmV4dC5vbXBfY2xhdXNlcy0+bnVtX3RocmVhZHNfc3Ry
aWN0OworCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9QQVJBTExFTF0ubnVtX3RocmVhZHNf
ZGltcworCSAgICA9IGNvZGUtPmV4dC5vbXBfY2xhdXNlcy0+bnVtX3RocmVhZHNfZGltczsK
IAkgIGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRfUEFSQUxMRUxdLnByb2NfYmluZAogCSAgICA9
IGNvZGUtPmV4dC5vbXBfY2xhdXNlcy0+cHJvY19iaW5kOwogCSAgLyogU2hhcmVkIGFuZCBk
ZWZhdWx0IGNsYXVzZXMgYXJlIGFsbG93ZWQgb24gcGFyYWxsZWwsIHRlYW1zCkBAIC05MzQ0
LDggKzkzODIsOCBAQCBnZmNfdHJhbnNfb21wX3RhcmdldCAoZ2ZjX2NvZGUgKmNvZGUpCiAg
ICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgaWYgKGZsYWdfb3Blbm1wCi0JICAm
JiAoY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9URUFNU10ubnVtX3RlYW1zX3VwcGVyCi0JICAg
ICAgfHwgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9URUFNU10udGhyZWFkX2xpbWl0KSkKKwkg
ICYmIChjbGF1c2VzYVtHRkNfT01QX1NQTElUX1RFQU1TXS5udW1fdGVhbXNfbGlzdAorCSAg
ICAgIHx8IGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRfVEVBTVNdLnRocmVhZF9saW1pdF9saXN0
KSkKIAl7CiAJICBnZmNfb21wX2NsYXVzZXMgY2xhdXNlc2I7CiAJICB0cmVlIHRlYW1zX2Ns
YXVzZXM7CkBAIC05MzUzLDE0ICs5MzkxLDE4IEBAIGdmY190cmFuc19vbXBfdGFyZ2V0IChn
ZmNfY29kZSAqY29kZSkKIAkgICAgIHRocmVhZF9saW1pdCBjbGF1c2VzIGFyZSBldmFsdWF0
ZWQgYmVmb3JlIGVudGVyaW5nIHRoZQogCSAgICAgdGFyZ2V0IGNvbnN0cnVjdC4gICovCiAJ
ICBtZW1zZXQgKCZjbGF1c2VzYiwgJ1wwJywgc2l6ZW9mIChjbGF1c2VzYikpOwotCSAgY2xh
dXNlc2IubnVtX3RlYW1zX2xvd2VyCi0JICAgID0gY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9U
RUFNU10ubnVtX3RlYW1zX2xvd2VyOwotCSAgY2xhdXNlc2IubnVtX3RlYW1zX3VwcGVyCi0J
ICAgID0gY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9URUFNU10ubnVtX3RlYW1zX3VwcGVyOwot
CSAgY2xhdXNlc2IudGhyZWFkX2xpbWl0ID0gY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9URUFN
U10udGhyZWFkX2xpbWl0OwotCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9URUFNU10ubnVt
X3RlYW1zX2xvd2VyID0gTlVMTDsKLQkgIGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRfVEVBTVNd
Lm51bV90ZWFtc191cHBlciA9IE5VTEw7Ci0JICBjbGF1c2VzYVtHRkNfT01QX1NQTElUX1RF
QU1TXS50aHJlYWRfbGltaXQgPSBOVUxMOworCSAgY2xhdXNlc2IubnVtX3RlYW1zX2xpc3QK
KwkgICAgPSBjbGF1c2VzYVtHRkNfT01QX1NQTElUX1RFQU1TXS5udW1fdGVhbXNfbGlzdDsK
KwkgIGNsYXVzZXNiLm51bV90ZWFtc19kaW1zCisJICAgID0gY2xhdXNlc2FbR0ZDX09NUF9T
UExJVF9URUFNU10ubnVtX3RlYW1zX2RpbXM7CisJICBjbGF1c2VzYi50aHJlYWRfbGltaXRf
bGlzdAorCSAgICA9IGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRfVEVBTVNdLnRocmVhZF9saW1p
dF9saXN0OworCSAgY2xhdXNlc2IudGhyZWFkX2xpbWl0X3N0cmljdAorCSAgICA9IGNsYXVz
ZXNhW0dGQ19PTVBfU1BMSVRfVEVBTVNdLnRocmVhZF9saW1pdF9zdHJpY3Q7CisJICBjbGF1
c2VzYi50aHJlYWRfbGltaXRfZGltcworCSAgICA9IGNsYXVzZXNhW0dGQ19PTVBfU1BMSVRf
VEVBTVNdLnRocmVhZF9saW1pdF9kaW1zOworCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJVF9U
RUFNU10ubnVtX3RlYW1zX2xpc3QgPSBOVUxMOworCSAgY2xhdXNlc2FbR0ZDX09NUF9TUExJ
VF9URUFNU10udGhyZWFkX2xpbWl0X2xpc3QgPSBOVUxMOwogCSAgdGVhbXNfY2xhdXNlcwog
CSAgICA9IGdmY190cmFuc19vbXBfY2xhdXNlcyAoJmJsb2NrLCAmY2xhdXNlc2IsIGNvZGUt
PmxvYyk7CiAJICBwdXNobGV2ZWwgKCk7CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dm
b3J0cmFuLmRnL2dvbXAvc3BhdGlhbC1kaW1lbnNpb25zLTEuZjkwIGIvZ2NjL3Rlc3RzdWl0
ZS9nZm9ydHJhbi5kZy9nb21wL3NwYXRpYWwtZGltZW5zaW9ucy0xLmY5MApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTQzNDkxODBmNWUKLS0tIC9kZXYvbnVs
bAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvc3BhdGlhbC1kaW1lbnNp
b25zLTEuZjkwCkBAIC0wLDAgKzEsMTE2IEBACishIHsgZGctZG8gY29tcGlsZSB9CishIHsg
ZGctYWRkaXRpb25hbC1vcHRpb25zICItZmR1bXAtdHJlZS1vcmlnaW5hbCIgfQorCitzdWJy
b3V0aW5lIG9uZV9hCishJG9tcCB0ZWFtcyBudW1fdGVhbXMoZGltcygzKSA6IDEsMiwzKSAm
ICAgICAgICAgICAgISB7IGRnLW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiAnbnVt
X3RlYW1zJyB3aXRoICdkaW1zJyBtb2RpZmllciIgfQorISRvbXAmICAgICAgdGhyZWFkX2xp
bWl0ICggZGltcyAoIDQgKSA6IDEsIDIsIDMsIDQpICEgeyBkZy1tZXNzYWdlICJzb3JyeSwg
dW5pbXBsZW1lbnRlZDogJ3RocmVhZF9saW1pdCcgd2l0aCAnZGltcycgbW9kaWZpZXIiIH0K
KyEkb21wICAgcGFyYWxsZWwgbnVtX3RocmVhZHMoZGltcygzKTogMSwyLDMpICAgICAgICAh
IHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50ZWQ6ICdudW1fdGhyZWFkcycgd2l0
aCAnZGltcycgbW9kaWZpZXIiIH0KKyEkb21wICAgZW5kIHBhcmFsbGVsCishJG9tcCBlbmQg
dGVhbXMKK2VuZAorCitzdWJyb3V0aW5lIG9uZV9iCishJG9tcCB0ZWFtcyBudW1fdGVhbXMo
ZGltcygzKSA6IDEsMiwzKSAmICAgICAgICAgICAgICAgICAgICAgICEgeyBkZy1tZXNzYWdl
ICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogJ251bV90ZWFtcycgd2l0aCAnZGltcycgbW9kaWZp
ZXIiIH0KKyEkb21wJiAgICAgIHRocmVhZF9saW1pdCAoIGRpbXMgKCA0ICkgLCByZWxheGVk
IDogMSwgMiwgMywgNCkgISB7IGRnLW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiAn
dGhyZWFkX2xpbWl0JyB3aXRoICdkaW1zJyBtb2RpZmllciIgfQorISRvbXAgICBwYXJhbGxl
bCBudW1fdGhyZWFkcyhkaW1zKDMpICwgcmVsYXhlZCA6IDEsMiwzKSAgICAgICAhIHsgZGct
bWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50ZWQ6ICdudW1fdGhyZWFkcycgd2l0aCAnZGlt
cycgbW9kaWZpZXIiIH0KKyEkb21wICAgZW5kIHBhcmFsbGVsCishJG9tcCBlbmQgdGVhbXMK
K2VuZAorCitzdWJyb3V0aW5lIG9uZV9jCishJG9tcCB0ZWFtcyBudW1fdGVhbXMoZGltcygz
KSA6IDEsMiwzKSAmICAgICAgICAgICAgICAgICAgICAgISB7IGRnLW1lc3NhZ2UgInNvcnJ5
LCB1bmltcGxlbWVudGVkOiAnbnVtX3RlYW1zJyB3aXRoICdkaW1zJyBtb2RpZmllciIgfQor
ISRvbXAmICAgICAgdGhyZWFkX2xpbWl0ICggZGltcyAoIDQgKSAsIHN0cmljdCA6IDEsIDIs
IDMsIDQpICEgeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogJ3RocmVhZF9s
aW1pdCcgd2l0aCAnZGltcycgbW9kaWZpZXIiIH0KKyEkb21wICAgcGFyYWxsZWwgbnVtX3Ro
cmVhZHMoZGltcygzKSAsIHN0cmljdCA6IDEsMiwzKSAgICAgICAhIHsgZGctbWVzc2FnZSAi
c29ycnksIHVuaW1wbGVtZW50ZWQ6ICdudW1fdGhyZWFkcycgd2l0aCAnZGltcycgbW9kaWZp
ZXIiIH0KKyEkb21wICAgZW5kIHBhcmFsbGVsCishJG9tcCBlbmQgdGVhbXMKK2VuZAorCitz
dWJyb3V0aW5lIG9uZV9kCishJG9tcCB0ZWFtcyBudW1fdGVhbXMgKCBkaW1zKDMpIDogMSwy
LDMpICYgICAgICAgICAgICAgICAgICAgICAhIHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1w
bGVtZW50ZWQ6ICdudW1fdGVhbXMnIHdpdGggJ2RpbXMnIG1vZGlmaWVyIiB9CishJG9tcCYg
ICAgICB0aHJlYWRfbGltaXQgKCByZWxheGVkICwgIGRpbXMgKCA0ICkgOiAxLCAyLCAzLCA0
KSAhIHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50ZWQ6ICd0aHJlYWRfbGltaXQn
IHdpdGggJ2RpbXMnIG1vZGlmaWVyIiB9CishJG9tcCAgIHBhcmFsbGVsIG51bV90aHJlYWRz
KCByZWxheGVkICwgZGltcygzKSA6IDEsMiwzKSAgICAgICAhIHsgZGctbWVzc2FnZSAic29y
cnksIHVuaW1wbGVtZW50ZWQ6ICdudW1fdGhyZWFkcycgd2l0aCAnZGltcycgbW9kaWZpZXIi
IH0KKyEkb21wICAgZW5kIHBhcmFsbGVsCishJG9tcCBlbmQgdGVhbXMKK2VuZAorCitzdWJy
b3V0aW5lIG9uZV9lCishJG9tcCB0ZWFtcyBudW1fdGVhbXMgKCBkaW1zKDMpIDogMSwyLDMp
ICYgICAgICAgICAgICAgICAgICAgICEgeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1l
bnRlZDogJ251bV90ZWFtcycgd2l0aCAnZGltcycgbW9kaWZpZXIiIH0KKyEkb21wJiAgICAg
IHRocmVhZF9saW1pdCAoIHN0cmljdCAsICBkaW1zICggNCApIDogMSwgMiwgMywgNCkgISB7
IGRnLW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiAndGhyZWFkX2xpbWl0JyB3aXRo
ICdkaW1zJyBtb2RpZmllciIgfQorISRvbXAgICBwYXJhbGxlbCBudW1fdGhyZWFkcyggc3Ry
aWN0ICwgZGltcygzKSA6IDEsMiwzKSAgICAgICAhIHsgZGctbWVzc2FnZSAic29ycnksIHVu
aW1wbGVtZW50ZWQ6ICdudW1fdGhyZWFkcycgd2l0aCAnZGltcycgbW9kaWZpZXIiIH0KKyEk
b21wICAgZW5kIHBhcmFsbGVsCishJG9tcCBlbmQgdGVhbXMKK2VuZAorCisKK3N1YnJvdXRp
bmUgdHdvCishJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQgKHN0cmljdCA6IDQpICAgICAgICAg
ICEgeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogJ3RocmVhZF9saW1pdCcg
d2l0aCAnc3RyaWN0JyBtb2RpZmllciIgfQorISRvbXAgICBwYXJhbGxlbCBudW1fdGhyZWFk
cyhzdHJpY3QgOiAyKSAgICAgICAhIHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50
ZWQ6ICdudW1fdGhyZWFkcycgd2l0aCAnc3RyaWN0JyBtb2RpZmllciIgfQorISRvbXAgICBl
bmQgcGFyYWxsZWwKKyEkb21wIGVuZCB0ZWFtcworZW5kCisKK3N1YnJvdXRpbmUgemVybwor
ISRvbXAgdGVhbXMgbnVtX3RlYW1zKDEyMzQpIHRocmVhZF9saW1pdCAoIDIzNDUpICAhIE9L
CishJG9tcCAgIHBhcmFsbGVsIG51bV90aHJlYWRzKCAzNDU2KSAgICAgICAgICAgICEgT0sK
KyEkb21wICAgZW5kIHBhcmFsbGVsCishJG9tcCBlbmQgdGVhbXMKKworISRvbXAgdGVhbXMg
bnVtX3RlYW1zKDEyMzo0NTYpCishJG9tcCBlbmQgdGVhbXMKK2VuZAorCitzdWJyb3V0aW5l
IHRocmVlCishJG9tcCB0ZWFtcyBudW1fdGVhbXMoNDU2NykgdGhyZWFkX2xpbWl0IChyZWxh
eGVkIDogNTY3OCkgICEgT0sKKyEkb21wICAgcGFyYWxsZWwgbnVtX3RocmVhZHMocmVsYXhl
ZCA6IDY3ODkpICAgICAgICAgICAgISBPSworISRvbXAgICBlbmQgcGFyYWxsZWwKKyEkb21w
IGVuZCB0ZWFtcworZW5kCisKK3N1YnJvdXRpbmUgZm91cgorISRvbXAgcGFyYWxsZWwgbnVt
X3RocmVhZHMoMSAsIDIgLCAzICkgICEgeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1l
bnRlZDogJ251bV90aHJlYWRzJyB3aXRoIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQiIH0KKyEk
b21wIGVuZCBwYXJhbGxlbAorZW5kCisKK3N1YnJvdXRpbmUgZml2ZQorISRvbXAgcGFyYWxs
ZWwgbnVtX3RocmVhZHMocmVsYXhlZCA6IDEsMiwzKSAgISB7IGRnLW1lc3NhZ2UgInNvcnJ5
LCB1bmltcGxlbWVudGVkOiAnbnVtX3RocmVhZHMnIHdpdGggbW9yZSB0aGFuIG9uZSBhcmd1
bWVudCIgfQorISRvbXAgZW5kIHBhcmFsbGVsCitlbmQKKworc3Vicm91dGluZSBzaXgKKyEk
b21wIHBhcmFsbGVsIG51bV90aHJlYWRzKHN0cmljdCA6IDEsMiwzKSAgISB7IGRnLW1lc3Nh
Z2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiAnbnVtX3RocmVhZHMnIHdpdGggJ3N0cmljdCcg
bW9kaWZpZXIiIH0KKyEkb21wIGVuZCBwYXJhbGxlbAorZW5kCisKKworc3Vicm91dGluZSBz
ZXZlbgorICBpbnRlZ2VyIDo6IHN0YXRpYywgcmVsYXhlZCwgZGltcygyKQorICAhJG9tcCB0
ZWFtcyBudW1fdGVhbXMoc3RhdGljKSB0aHJlYWRfbGltaXQgKHN0YXRpYykgICEgT0sKKyAg
ISRvbXAgICBwYXJhbGxlbCBudW1fdGhyZWFkcyhzdGF0aWMpICAgICAgICAgICAgICAgICAh
IE9LCisgICEkb21wICAgZW5kIHBhcmFsbGVsCisgICEkb21wIGVuZCB0ZWFtcworCisgICEk
b21wIHRlYW1zIG51bV90ZWFtcyhyZWxheGVkKSB0aHJlYWRfbGltaXQgKHJlbGF4ZWQpICAh
IE9LCisgICEkb21wICAgcGFyYWxsZWwgbnVtX3RocmVhZHMocmVsYXhlZCkgICAgICAgICAg
ICAgICAgICAhIE9LCisgICEkb21wICAgZW5kIHBhcmFsbGVsCisgICEkb21wIGVuZCB0ZWFt
cworCisgICEkb21wIHRlYW1zIG51bV90ZWFtcyhkaW1zKDIpKSB0aHJlYWRfbGltaXQgKGRp
bXMoMikpICAhIE9LCisgICEkb21wICAgcGFyYWxsZWwgbnVtX3RocmVhZHMoZGltcygyKSkg
ICAgICAgICAgICAgICAgICAhIE9LCisgICEkb21wICAgZW5kIHBhcmFsbGVsCisgICEkb21w
IGVuZCB0ZWFtcworCitlbmQgc3Vicm91dGluZQorCishIENoZWNrIHRoYXQgdGhlIHRyZWUg
aXMgY29ycmVjdGx5IGdlbmVyYXRlZDoKKworISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1
bXAtdGltZXMgIiNwcmFnbWEgb21wIHRlYW1zIG51bV90ZWFtc1xcKDEyMzRcXCkgdGhyZWFk
X2xpbWl0XFwoMjM0NVxcKSIgMSAib3JpZ2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nh
bi10cmVlLWR1bXAtdGltZXMgIiNwcmFnbWEgb21wIHBhcmFsbGVsIG51bV90aHJlYWRzXFwo
MzQ1NlxcKSIgMSAib3JpZ2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1
bXAtdGltZXMgIiNwcmFnbWEgb21wIHRlYW1zIG51bV90ZWFtc1xcKDQ1NjdcXCkgdGhyZWFk
X2xpbWl0XFwoNTY3OFxcKSIgMSAib3JpZ2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nh
bi10cmVlLWR1bXAtdGltZXMgIiNwcmFnbWEgb21wIHBhcmFsbGVsIG51bV90aHJlYWRzXFwo
Njc4OVxcKSIgMSAib3JpZ2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1
bXAtdGltZXMgIiNwcmFnbWEgb21wIHRlYW1zIG51bV90ZWFtc1xcKDEyMzo0NTZcXCkiIDEg
Im9yaWdpbmFsIiB9IH0KKworISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMg
IkRcXC5cWzAtOVxdKyA9IHN0YXRpYzsiIDMgIm9yaWdpbmFsIiB9IH0KKyEgeyBkZy1maW5h
bCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJEXFwuXFswLTlcXSsgPSByZWxheGVkOyIgMyAi
b3JpZ2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIkRc
XC5cWzAtOVxdKyA9IGRpbXNcXFxbMVxcXF07IiAzICJvcmlnaW5hbCIgfSB9CishIHsgZGct
ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiI3ByYWdtYSBvbXAgdGVhbXMgbnVtX3Rl
YW1zXFwoRFxcLlxbMC05XF0rXFwpIHRocmVhZF9saW1pdFxcKERcXC5cWzAtOVxdK1xcKSIg
MyAib3JpZ2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMg
IiNwcmFnbWEgb21wIHBhcmFsbGVsIG51bV90aHJlYWRzXFwoRFxcLlxbMC05XF0rXFwpIiAz
ICJvcmlnaW5hbCIgfSB9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRn
L2dvbXAvc3BhdGlhbC1kaW1lbnNpb25zLTIuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJh
bi5kZy9nb21wL3NwYXRpYWwtZGltZW5zaW9ucy0yLmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uZGI1NzBkZjg2ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9n
Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvc3BhdGlhbC1kaW1lbnNpb25zLTIuZjkw
CkBAIC0wLDAgKzEsMjIgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgeyBkZy1hZGRpdGlv
bmFsLW9wdGlvbnMgIi1mZHVtcC10cmVlLW9yaWdpbmFsIiB9CisKKyEgVGhpcyB0ZXN0Y2Fz
ZSBpcyBhbWJpZ291cyBpbiBGb3J0cmFuCishIGNmLiBPcGVuTVAgU3BlYyBJc3N1ZXMgNDk5
OAorISBVbnJlc29sdmVkIHdoZW4gdGhpcyB0ZXN0Y2FzZSB3YXMgd3JpdHRlbgorCishIEZJ
WE1FOiBDaGVjayB3aGF0J3MgdGhlIG91dGNvbWUgb2YgdGhlIGRpc2N1c3Npb24KKworISBO
T1RFOiBHQ0MgY3VycmVudGx5IGltcGxlbWVudHMgdGhpcyBhcyBzcGF0aWFsIGRpbWVuc2lv
bgorISBhbmQgbm90IGFzIGxvd2VyIGJvdW5kIC4uLgorCitzdWJyb3V0aW5lIHN1YgorICBp
bnRlZ2VyLCBwYXJhbWV0ZXIgOjogZGltcygyKSA9IFsxMSwyMl0KKyEuLi4KKyAgISRvbXAg
dGVhbXMgIG51bV90ZWFtcyggZGltcygxKSA6IDI1NiApICAhIHsgZGctbWVzc2FnZSAic29y
cnksIHVuaW1wbGVtZW50ZWQ6ICdudW1fdGVhbXMnIHdpdGggJ2RpbXMnIG1vZGlmaWVyIiB9
CisgICEkb21wIGVuZCB0ZWFtcworZW5kCisKKyEgLi4uIGhlbmNlOiAnbnVtX3RlYW1zKDI1
NiknIGFuZCBub3QgJ251bV90ZWFtcygxMToyNTYpJworCishIHsgZGctZmluYWwgeyBzY2Fu
LXRyZWUtZHVtcCAiI3ByYWdtYSBvbXAgdGVhbXMgbnVtX3RlYW1zXFwoMjU2XFwpIiAib3Jp
Z2luYWwiIH0gfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21w
L3NwYXRpYWwtZGltZW5zaW9ucy0zLmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcv
Z29tcC9zcGF0aWFsLWRpbWVuc2lvbnMtMy5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjc0ZTc2Nzk1MDg1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl
c3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL3NwYXRpYWwtZGltZW5zaW9ucy0zLmY5MApAQCAt
MCwwICsxLDI1MiBAQAorISB7IGRnLWRvIGNvbXBpbGUgfQorISB7IGRnLWFkZGl0aW9uYWwt
b3B0aW9ucyAiLWZkdW1wLXRyZWUtb3JpZ2luYWwiIH0KKworc3Vicm91dGluZSBvbmUKKyAg
ISRvbXAgdGVhbXMgbnVtX3RlYW1zKDEpIG51bV90ZWFtcygyKSAgISB7IGRnLWVycm9yICJE
dXBsaWNhdGVkICdudW1fdGVhbXMnIGNsYXVzZSIgfQorICBibG9jazsgZW5kIGJsb2NrCisK
KyAgISRvbXAgdGVhbXMgdGhyZWFkX2xpbWl0KDEpIHRocmVhZF9saW1pdCgyKSAgISB7IGRn
LWVycm9yICJEdXBsaWNhdGVkICd0aHJlYWRfbGltaXQnIGNsYXVzZSIgfQorICBibG9jazsg
ZW5kIGJsb2NrCisKKyAgISRvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMoMSkgbnVtX3RocmVh
ZHMoMikgICEgeyBkZy1lcnJvciAiRHVwbGljYXRlZCAnbnVtX3RocmVhZHMnIGNsYXVzZSIg
fQorICBibG9jazsgZW5kIGJsb2NrCisKKworICAhJG9tcCB0ZWFtcyBudW1fdGVhbXMoZGlt
cyhbMSwxXSkgOiAxKSAgISB7IGRnLWVycm9yICJESU1TIG11c3QgYmUgYSBjb25zdGFudCBw
b3NpdGl2ZSBpbnRlZ2VyIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFt
cyBudW1fdGVhbXMoZGltcygxLjApIDogMSkgICEgeyBkZy1lcnJvciAiRElNUyBtdXN0IGJl
IGEgY29uc3RhbnQgcG9zaXRpdmUgaW50ZWdlciIgfQorICBibG9jazsgZW5kIGJsb2NrCisK
KyAgISRvbXAgdGVhbXMgbnVtX3RlYW1zKGRpbXMoaSkgOiAxKSAgISB7IGRnLWVycm9yICJE
SU1TIG11c3QgYmUgYSBjb25zdGFudCBwb3NpdGl2ZSBpbnRlZ2VyIiB9CisgIGJsb2NrOyBl
bmQgYmxvY2sKKworICAhJG9tcCB0ZWFtcyBudW1fdGVhbXMoZGltcyhpKSA6IDEpICAhIHsg
ZGctZXJyb3IgIkRJTVMgbXVzdCBiZSBhIGNvbnN0YW50IHBvc2l0aXZlIGludGVnZXIiIH0K
KyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIG51bV90ZWFtcyhkaW1zKCAx
IC0gMikgOiAxKSAgISB7IGRnLWVycm9yICJESU1TIG11c3QgYmUgYSBjb25zdGFudCBwb3Np
dGl2ZSBpbnRlZ2VyIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFtcyBu
dW1fdGVhbXMoZGltcyggaW50ICggY29zKDAuMCkgKSkgOiAxKSAgISBPSworICBibG9jazsg
ZW5kIGJsb2NrCisKKworICAhJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQoZGltcyhbMSwxXSkg
OiAxKSAgISB7IGRnLWVycm9yICJESU1TIG11c3QgYmUgYSBjb25zdGFudCBwb3NpdGl2ZSBp
bnRlZ2VyIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFtcyB0aHJlYWRf
bGltaXQoZGltcygxLjApIDogMSkgICEgeyBkZy1lcnJvciAiRElNUyBtdXN0IGJlIGEgY29u
c3RhbnQgcG9zaXRpdmUgaW50ZWdlciIgfQorICBibG9jazsgZW5kIGJsb2NrCisKKyAgISRv
bXAgdGVhbXMgdGhyZWFkX2xpbWl0KGRpbXMoaSkgOiAxKSAgISB7IGRnLWVycm9yICJESU1T
IG11c3QgYmUgYSBjb25zdGFudCBwb3NpdGl2ZSBpbnRlZ2VyIiB9CisgIGJsb2NrOyBlbmQg
YmxvY2sKKworICAhJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQoZGltcyhpKSA6IDEpICAhIHsg
ZGctZXJyb3IgIkRJTVMgbXVzdCBiZSBhIGNvbnN0YW50IHBvc2l0aXZlIGludGVnZXIiIH0K
KyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRocmVhZF9saW1pdChkaW1z
KCAxIC0gMikgOiAxKSAgISB7IGRnLWVycm9yICJESU1TIG11c3QgYmUgYSBjb25zdGFudCBw
b3NpdGl2ZSBpbnRlZ2VyIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFt
cyB0aHJlYWRfbGltaXQoZGltcyggaW50ICggY29zKDAuMCkgKSkgOiAxKSAgISBPSworICBi
bG9jazsgZW5kIGJsb2NrCisKKworICAhJG9tcCBwYXJhbGxlbCBudW1fdGhyZWFkcyhkaW1z
KFsxLDFdKSA6IDEpICAhIHsgZGctZXJyb3IgIkRJTVMgbXVzdCBiZSBhIGNvbnN0YW50IHBv
c2l0aXZlIGludGVnZXIiIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHBhcmFs
bGVsIG51bV90aHJlYWRzKGRpbXMoMS4wKSA6IDEpICAhIHsgZGctZXJyb3IgIkRJTVMgbXVz
dCBiZSBhIGNvbnN0YW50IHBvc2l0aXZlIGludGVnZXIiIH0KKyAgYmxvY2s7IGVuZCBibG9j
aworCisgICEkb21wIHBhcmFsbGVsIG51bV90aHJlYWRzKGRpbXMoaSkgOiAxKSAgISB7IGRn
LWVycm9yICJESU1TIG11c3QgYmUgYSBjb25zdGFudCBwb3NpdGl2ZSBpbnRlZ2VyIiB9Cisg
IGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBwYXJhbGxlbCBudW1fdGhyZWFkcyhkaW1z
KGkpIDogMSkgICEgeyBkZy1lcnJvciAiRElNUyBtdXN0IGJlIGEgY29uc3RhbnQgcG9zaXRp
dmUgaW50ZWdlciIgfQorICBibG9jazsgZW5kIGJsb2NrCisKKyAgISRvbXAgcGFyYWxsZWwg
bnVtX3RocmVhZHMoZGltcyggMSAtIDIpIDogMSkgICEgeyBkZy1lcnJvciAiRElNUyBtdXN0
IGJlIGEgY29uc3RhbnQgcG9zaXRpdmUgaW50ZWdlciIgfQorICBibG9jazsgZW5kIGJsb2Nr
CisKKyAgISRvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMoZGltcyggaW50ICggY29zKDAuMCkg
KSkgOiAxKSAgISBPSworICBibG9jazsgZW5kIGJsb2NrCitlbmQKKworc3Vicm91dGluZSB0
d28KKyAgISRvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMoZGltcyggaW50ICggY29zKDAuMCkg
KSArIDEgKSA6IDEpICAhIHsgZGctZXJyb3IgIlRoZSBudW1iZXIgb2YgYXJndW1lbnRzIFxc
KDFcXCkgbXVzdCBiZSB0aGUgc2FtZSBhcyBzcGVjaWZpZWQgZm9yIERJTVMiIH0KKyAgYmxv
Y2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIG51bV90ZWFtcyhkaW1zKCAzICkgIDog
MSwgMiwgMyAsIDQpICAhIHsgZGctZXJyb3IgIlRoZSBudW1iZXIgb2YgYXJndW1lbnRzIFxc
KDRcXCkgbXVzdCBiZSB0aGUgc2FtZSBhcyBzcGVjaWZpZWQgZm9yIERJTVMiIH0KKyAgYmxv
Y2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRocmVhZF9saW1pdChkaW1zKCAzICkg
OiAxLCA0KSAgISB7IGRnLWVycm9yICJUaGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBcXCgyXFwp
IG11c3QgYmUgdGhlIHNhbWUgYXMgc3BlY2lmaWVkIGZvciBESU1TIiB9CisgIGJsb2NrOyBl
bmQgYmxvY2sKK2VuZAorCitzdWJyb3V0aW5lIHRocmVlCisgICEkb21wIHRlYW1zIG51bV90
ZWFtcyAgISB7IGRnLWVycm9yICJFeHBlY3RlZCAnXFwoJyBhZnRlciAnbnVtX3RlYW1zJyIg
fQorICBibG9jazsgZW5kIGJsb2NrCisKKyAgISRvbXAgdGVhbXMgbnVtX3RlYW1zKCA6ICAh
IHsgZGctZXJyb3IgIkV4cGVjdGVkIGVpdGhlciAnXFxcW2xvd2VyLWV4cHIgOiBcXFxdIHVw
cGVyLWV4cHInIG9yICdkaW1zXFwoTlxcKTogZXhwci1saXN0JyIgfQorICBibG9jazsgZW5k
IGJsb2NrCisKKyAgISRvbXAgdGVhbXMgbnVtX3RlYW1zKCAgISB7IGRnLWVycm9yICJFeHBl
Y3RlZCBlaXRoZXIgJ1xcXFtsb3dlci1leHByIDogXFxcXSB1cHBlci1leHByJyBvciAnZGlt
c1xcKE5cXCk6IGV4cHItbGlzdCciIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21w
IHRlYW1zIG51bV90ZWFtcyggZGltcyAhIHsgZGctZXJyb3IgIkZhaWxlZCB0byBtYXRjaCBj
bGF1c2UiIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIG51bV90ZWFt
cyggZGltcygxKSAhIHsgZGctZXJyb3IgIkludmFsaWQgY2hhcmFjdGVyIGluIG5hbWUiIH0K
KyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIG51bV90ZWFtcyggZGltcygx
KSA6ICEgeyBkZy1lcnJvciAiRXhwZWN0ZWQgZWl0aGVyICdcXFxbbG93ZXItZXhwciA6IFxc
XF0gdXBwZXItZXhwcicgb3IgJ2RpbXNcXChOXFwpOiBleHByLWxpc3QnIiB9CisgIGJsb2Nr
OyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFtcyBudW1fdGVhbXMoIGRpbXMoMSkgOiAxICEg
eyBkZy1lcnJvciAiU3ludGF4IGVycm9yIGluIE9wZW5NUCBleHByZXNzaW9uIiB9CisgIGJs
b2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFtcyBudW1fdGVhbXMoIDUgOiAhIHsgZGct
ZXJyb3IgIkludmFsaWQgY2hhcmFjdGVyIGluIG5hbWUiIH0KKyAgYmxvY2s7IGVuZCBibG9j
aworCisgICEkb21wIHRlYW1zIG51bV90ZWFtcyggNSA6IDUgISB7IGRnLWVycm9yICJGYWls
ZWQgdG8gbWF0Y2ggY2xhdXNlIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKK2VuZAorCitzdWJy
b3V0aW5lIGZvdXIKKyAgISRvbXAgdGVhbXMgdGhyZWFkX2xpbWl0ICAhIHsgZGctZXJyb3Ig
IkV4cGVjdGVkICdcXCgnIGFmdGVyICd0aHJlYWRfbGltaXQnIiB9CisgIGJsb2NrOyBlbmQg
YmxvY2sKKworICAhJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQoIDogICEgeyBkZy1lcnJvciAi
RXhwZWN0ZWQgU1RSSUNULCBSRUxBWEVEIG9yIERJTVMgbW9kaWZpZXIiIH0KKyAgYmxvY2s7
IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRocmVhZF9saW1pdCggICEgeyBkZy1lcnJv
ciAiRXhwZWN0ZWQgYSBsaXN0IG9mIGludGVnZXIgZXhwcmVzc2lvbnMgZm9sbG93ZWQgYnkg
YSAnXFwpJyBhbmQgb3B0aW9uYWxseSBwcmVjZWVkZWQgYnkgdGhlIFNUUklDVCwgUkVMQVhF
RCwgb3IgRElNUyBhcyBtb2RpZmllcnMgYW5kIGEgY29sb24gYXQgLjEuIiB9CisgIGJsb2Nr
OyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQoIGRpbXMgISB7IGRn
LWVycm9yICJFeHBlY3RlZCBhIGxpc3Qgb2YgaW50ZWdlciBleHByZXNzaW9ucyBmb2xsb3dl
ZCBieSBhICdcXCknIGFuZCBvcHRpb25hbGx5IHByZWNlZWRlZCBieSB0aGUgU1RSSUNULCBS
RUxBWEVELCBvciBESU1TIGFzIG1vZGlmaWVycyBhbmQgYSBjb2xvbiBhdCAuMS4iIH0KKyAg
YmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRocmVhZF9saW1pdCggZGltcygx
KSAhIHsgZGctZXJyb3IgIkV4cGVjdGVkIGEgbGlzdCBvZiBpbnRlZ2VyIGV4cHJlc3Npb25z
IGZvbGxvd2VkIGJ5IGEgJ1xcKScgYW5kIG9wdGlvbmFsbHkgcHJlY2VlZGVkIGJ5IHRoZSBT
VFJJQ1QsIFJFTEFYRUQsIG9yIERJTVMgYXMgbW9kaWZpZXJzIGFuZCBhIGNvbG9uIGF0IC4x
LiIgfQorICBibG9jazsgZW5kIGJsb2NrCisKKyAgISRvbXAgdGVhbXMgdGhyZWFkX2xpbWl0
KCBkaW1zKDEpIDogISB7IGRnLWVycm9yICJFeHBlY3RlZCBhIGxpc3Qgb2YgaW50ZWdlciBl
eHByZXNzaW9ucyBmb2xsb3dlZCBieSBhICdcXCknIGFuZCBvcHRpb25hbGx5IHByZWNlZWRl
ZCBieSB0aGUgU1RSSUNULCBSRUxBWEVELCBvciBESU1TIGFzIG1vZGlmaWVycyBhbmQgYSBj
b2xvbiBhdCAuMS4iIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRo
cmVhZF9saW1pdCggZGltcygxKSA6IDEgISB7IGRnLWVycm9yICJFeHBlY3RlZCBhIGxpc3Qg
b2YgaW50ZWdlciBleHByZXNzaW9ucyBmb2xsb3dlZCBieSBhICdcXCknIGFuZCBvcHRpb25h
bGx5IHByZWNlZWRlZCBieSB0aGUgU1RSSUNULCBSRUxBWEVELCBvciBESU1TIGFzIG1vZGlm
aWVycyBhbmQgYSBjb2xvbiBhdCAuMS4iIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEk
b21wIHRlYW1zIHRocmVhZF9saW1pdCggNSA6ICEgeyBkZy1lcnJvciAiRXhwZWN0ZWQgYSBs
aXN0IG9mIGludGVnZXIgZXhwcmVzc2lvbnMgZm9sbG93ZWQgYnkgYSAnXFwpJyBhbmQgb3B0
aW9uYWxseSBwcmVjZWVkZWQgYnkgdGhlIFNUUklDVCwgUkVMQVhFRCwgb3IgRElNUyBhcyBt
b2RpZmllcnMgYW5kIGEgY29sb24gYXQgLjEuIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKwor
ICAhJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQoIDUgOiA1ICEgeyBkZy1lcnJvciAiRXhwZWN0
ZWQgYSBsaXN0IG9mIGludGVnZXIgZXhwcmVzc2lvbnMgZm9sbG93ZWQgYnkgYSAnXFwpJyBh
bmQgb3B0aW9uYWxseSBwcmVjZWVkZWQgYnkgdGhlIFNUUklDVCwgUkVMQVhFRCwgb3IgRElN
UyBhcyBtb2RpZmllcnMgYW5kIGEgY29sb24gYXQgLjEuIiB9CisgIGJsb2NrOyBlbmQgYmxv
Y2sKK2VuZAorCitzdWJyb3V0aW5lIGZpdmUKKyAgISRvbXAgcGFyYWxsZWwgbnVtX3RocmVh
ZHMgICEgeyBkZy1lcnJvciAiRXhwZWN0ZWQgJ1xcKCcgYWZ0ZXIgJ251bV90aHJlYWRzJyIg
fQorICBibG9jazsgZW5kIGJsb2NrCisKKyAgISRvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMo
IDogICEgeyBkZy1lcnJvciAiRXhwZWN0ZWQgU1RSSUNULCBSRUxBWEVEIG9yIERJTVMgbW9k
aWZpZXIiIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHBhcmFsbGVsIG51bV90
aHJlYWRzKCAgISB7IGRnLWVycm9yICJFeHBlY3RlZCBhIGxpc3Qgb2YgaW50ZWdlciBleHBy
ZXNzaW9ucyBmb2xsb3dlZCBieSBhICdcXCknIGFuZCBvcHRpb25hbGx5IHByZWNlZWRlZCBi
eSB0aGUgU1RSSUNULCBSRUxBWEVELCBvciBESU1TIGFzIG1vZGlmaWVycyBhbmQgYSBjb2xv
biBhdCAuMS4iIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHBhcmFsbGVsIG51
bV90aHJlYWRzKCBkaW1zICEgeyBkZy1lcnJvciAiRXhwZWN0ZWQgYSBsaXN0IG9mIGludGVn
ZXIgZXhwcmVzc2lvbnMgZm9sbG93ZWQgYnkgYSAnXFwpJyBhbmQgb3B0aW9uYWxseSBwcmVj
ZWVkZWQgYnkgdGhlIFNUUklDVCwgUkVMQVhFRCwgb3IgRElNUyBhcyBtb2RpZmllcnMgYW5k
IGEgY29sb24gYXQgLjEuIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBwYXJh
bGxlbCBudW1fdGhyZWFkcyggZGltcygxKSAhIHsgZGctZXJyb3IgIkV4cGVjdGVkIGEgbGlz
dCBvZiBpbnRlZ2VyIGV4cHJlc3Npb25zIGZvbGxvd2VkIGJ5IGEgJ1xcKScgYW5kIG9wdGlv
bmFsbHkgcHJlY2VlZGVkIGJ5IHRoZSBTVFJJQ1QsIFJFTEFYRUQsIG9yIERJTVMgYXMgbW9k
aWZpZXJzIGFuZCBhIGNvbG9uIGF0IC4xLiIgfQorICBibG9jazsgZW5kIGJsb2NrCisKKyAg
ISRvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMoIGRpbXMoMSkgOiAhIHsgZGctZXJyb3IgIkV4
cGVjdGVkIGEgbGlzdCBvZiBpbnRlZ2VyIGV4cHJlc3Npb25zIGZvbGxvd2VkIGJ5IGEgJ1xc
KScgYW5kIG9wdGlvbmFsbHkgcHJlY2VlZGVkIGJ5IHRoZSBTVFJJQ1QsIFJFTEFYRUQsIG9y
IERJTVMgYXMgbW9kaWZpZXJzIGFuZCBhIGNvbG9uIGF0IC4xLiIgfQorICBibG9jazsgZW5k
IGJsb2NrCisKKyAgISRvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMoIGRpbXMoMSkgOiAxICEg
eyBkZy1lcnJvciAiRXhwZWN0ZWQgYSBsaXN0IG9mIGludGVnZXIgZXhwcmVzc2lvbnMgZm9s
bG93ZWQgYnkgYSAnXFwpJyBhbmQgb3B0aW9uYWxseSBwcmVjZWVkZWQgYnkgdGhlIFNUUklD
VCwgUkVMQVhFRCwgb3IgRElNUyBhcyBtb2RpZmllcnMgYW5kIGEgY29sb24gYXQgLjEuIiB9
CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBwYXJhbGxlbCBudW1fdGhyZWFkcygg
NSA6ICEgeyBkZy1lcnJvciAiRXhwZWN0ZWQgYSBsaXN0IG9mIGludGVnZXIgZXhwcmVzc2lv
bnMgZm9sbG93ZWQgYnkgYSAnXFwpJyBhbmQgb3B0aW9uYWxseSBwcmVjZWVkZWQgYnkgdGhl
IFNUUklDVCwgUkVMQVhFRCwgb3IgRElNUyBhcyBtb2RpZmllcnMgYW5kIGEgY29sb24gYXQg
LjEuIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBwYXJhbGxlbCBudW1fdGhy
ZWFkcyggNSA6IDUgISB7IGRnLWVycm9yICJFeHBlY3RlZCBhIGxpc3Qgb2YgaW50ZWdlciBl
eHByZXNzaW9ucyBmb2xsb3dlZCBieSBhICdcXCknIGFuZCBvcHRpb25hbGx5IHByZWNlZWRl
ZCBieSB0aGUgU1RSSUNULCBSRUxBWEVELCBvciBESU1TIGFzIG1vZGlmaWVycyBhbmQgYSBj
b2xvbiBhdCAuMS4iIH0KKyAgYmxvY2s7IGVuZCBibG9jaworZW5kCisKK3N1YnJvdXRpbmUg
c2l4CisgICEkb21wIHRlYW1zIG51bV90ZWFtcyAoZGltcygxKSwgZGltcygxKSA6IDEpICEg
eyBkZy1lcnJvciAiSW52YWxpZCBjaGFyYWN0ZXIgaW4gbmFtZSIgfQorICBibG9jazsgZW5k
IGJsb2NrCisKKworICAhJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQgKGRpbXMoMSksIGRpbXMo
MSkgOiAxKSAhIHsgZGctZXJyb3IgIkR1cGxpY2F0ZWQgRElNUyBleHByZXNzaW9uIiB9Cisg
IGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQgKGRpbXMo
MSksIHJlbGF4ZWQsIGRpbXMoMSkgOiAxKSAhIHsgZGctZXJyb3IgIkR1cGxpY2F0ZWQgRElN
UyBleHByZXNzaW9uIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCB0ZWFtcyB0
aHJlYWRfbGltaXQgKGRpbXMoMSksIHN0cmljdCwgZGltcygxKSA6IDEpICEgeyBkZy1lcnJv
ciAiRHVwbGljYXRlZCBESU1TIGV4cHJlc3Npb24iIH0KKyAgYmxvY2s7IGVuZCBibG9jawor
CisgICEkb21wIHRlYW1zIHRocmVhZF9saW1pdCAoc3RyaWN0LCByZWxheGVkLCBkaW1zKDEp
IDogMSkgISB7IGRnLWVycm9yICJPbmx5IG9uZSBTVFJJQ1Qgb3IgUkVMQVhFRCBtb2RpZmll
ciBwZXJtaXR0ZWQiIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRo
cmVhZF9saW1pdCAocmVsYXhlZCwgc3RyaWN0LCBkaW1zKDEpIDogMSkgISB7IGRnLWVycm9y
ICJPbmx5IG9uZSBTVFJJQ1Qgb3IgUkVMQVhFRCBtb2RpZmllciBwZXJtaXR0ZWQiIH0KKyAg
YmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRocmVhZF9saW1pdCAoc3RyaWN0
LCByZWxheGVkIDogMSkgISB7IGRnLWVycm9yICJPbmx5IG9uZSBTVFJJQ1Qgb3IgUkVMQVhF
RCBtb2RpZmllciBwZXJtaXR0ZWQiIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21w
IHRlYW1zIHRocmVhZF9saW1pdCAocmVsYXhlZCwgc3RyaWN0IDogMSkgISB7IGRnLWVycm9y
ICJPbmx5IG9uZSBTVFJJQ1Qgb3IgUkVMQVhFRCBtb2RpZmllciBwZXJtaXR0ZWQiIH0KKyAg
YmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRocmVhZF9saW1pdCAoc3RyaWN0
LCBkaW1zKDEpLCBzdHJpY3QgOiAxKSAhIHsgZGctZXJyb3IgIk9ubHkgb25lIFNUUklDVCBv
ciBSRUxBWEVEIG1vZGlmaWVyIHBlcm1pdHRlZCIgfQorICBibG9jazsgZW5kIGJsb2NrCisK
KyAgISRvbXAgdGVhbXMgdGhyZWFkX2xpbWl0IChyZWxheGVkLCBkaW1zKDEpLCByZWxheGVk
IDogMSkgISB7IGRnLWVycm9yICJPbmx5IG9uZSBTVFJJQ1Qgb3IgUkVMQVhFRCBtb2RpZmll
ciBwZXJtaXR0ZWQiIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHRlYW1zIHRo
cmVhZF9saW1pdCAoc3RyaWN0LCBzdHJpY3QgOiAxKSAhIHsgZGctZXJyb3IgIk9ubHkgb25l
IFNUUklDVCBvciBSRUxBWEVEIG1vZGlmaWVyIHBlcm1pdHRlZCIgfQorICBibG9jazsgZW5k
IGJsb2NrCisKKyAgISRvbXAgdGVhbXMgdGhyZWFkX2xpbWl0IChyZWxheGVkLCByZWxheGVk
IDogMSkgISB7IGRnLWVycm9yICJPbmx5IG9uZSBTVFJJQ1Qgb3IgUkVMQVhFRCBtb2RpZmll
ciBwZXJtaXR0ZWQiIH0KKyAgYmxvY2s7IGVuZCBibG9jaworCisKKyAgISRvbXAgcGFyYWxs
ZWwgbnVtX3RocmVhZHMgKGRpbXMoMSksIGRpbXMoMSkgOiAxKSAhIHsgZGctZXJyb3IgIkR1
cGxpY2F0ZWQgRElNUyBleHByZXNzaW9uIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAh
JG9tcCBwYXJhbGxlbCBudW1fdGhyZWFkcyAoZGltcygxKSwgcmVsYXhlZCwgZGltcygxKSA6
IDEpICEgeyBkZy1lcnJvciAiRHVwbGljYXRlZCBESU1TIGV4cHJlc3Npb24iIH0KKyAgYmxv
Y2s7IGVuZCBibG9jaworCisgICEkb21wIHBhcmFsbGVsIG51bV90aHJlYWRzIChkaW1zKDEp
LCBzdHJpY3QsIGRpbXMoMSkgOiAxKSAhIHsgZGctZXJyb3IgIkR1cGxpY2F0ZWQgRElNUyBl
eHByZXNzaW9uIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBwYXJhbGxlbCBu
dW1fdGhyZWFkcyAoc3RyaWN0LCByZWxheGVkLCBkaW1zKDEpIDogMSkgISB7IGRnLWVycm9y
ICJPbmx5IG9uZSBTVFJJQ1Qgb3IgUkVMQVhFRCBtb2RpZmllciBwZXJtaXR0ZWQiIH0KKyAg
YmxvY2s7IGVuZCBibG9jaworCisgICEkb21wIHBhcmFsbGVsIG51bV90aHJlYWRzIChyZWxh
eGVkLCBzdHJpY3QsIGRpbXMoMSkgOiAxKSAhIHsgZGctZXJyb3IgIk9ubHkgb25lIFNUUklD
VCBvciBSRUxBWEVEIG1vZGlmaWVyIHBlcm1pdHRlZCIgfQorICBibG9jazsgZW5kIGJsb2Nr
CisKKyAgISRvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMgKHN0cmljdCwgcmVsYXhlZCA6IDEp
ICEgeyBkZy1lcnJvciAiT25seSBvbmUgU1RSSUNUIG9yIFJFTEFYRUQgbW9kaWZpZXIgcGVy
bWl0dGVkIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBwYXJhbGxlbCBudW1f
dGhyZWFkcyAocmVsYXhlZCwgc3RyaWN0IDogMSkgISB7IGRnLWVycm9yICJPbmx5IG9uZSBT
VFJJQ1Qgb3IgUkVMQVhFRCBtb2RpZmllciBwZXJtaXR0ZWQiIH0KKyAgYmxvY2s7IGVuZCBi
bG9jaworCisgICEkb21wIHBhcmFsbGVsIG51bV90aHJlYWRzIChzdHJpY3QsIGRpbXMoMSks
IHN0cmljdCA6IDEpICEgeyBkZy1lcnJvciAiT25seSBvbmUgU1RSSUNUIG9yIFJFTEFYRUQg
bW9kaWZpZXIgcGVybWl0dGVkIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBw
YXJhbGxlbCBudW1fdGhyZWFkcyAocmVsYXhlZCwgZGltcygxKSwgcmVsYXhlZCA6IDEpICEg
eyBkZy1lcnJvciAiT25seSBvbmUgU1RSSUNUIG9yIFJFTEFYRUQgbW9kaWZpZXIgcGVybWl0
dGVkIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBwYXJhbGxlbCBudW1fdGhy
ZWFkcyAoc3RyaWN0LCBzdHJpY3QgOiAxKSAhIHsgZGctZXJyb3IgIk9ubHkgb25lIFNUUklD
VCBvciBSRUxBWEVEIG1vZGlmaWVyIHBlcm1pdHRlZCIgfQorICBibG9jazsgZW5kIGJsb2Nr
CisKKyAgISRvbXAgcGFyYWxsZWwgbnVtX3RocmVhZHMgKHJlbGF4ZWQsIHJlbGF4ZWQgOiAx
KSAhIHsgZGctZXJyb3IgIk9ubHkgb25lIFNUUklDVCBvciBSRUxBWEVEIG1vZGlmaWVyIHBl
cm1pdHRlZCIgfQorICBibG9jazsgZW5kIGJsb2NrCitlbmQgc3Vicm91dGluZQorCitzdWJy
b3V0aW5lIHNldmVuCisgICEkb21wIHRlYW1zIG51bV90ZWFtcyAoMiwyKSAgISB7IGRnLWVy
cm9yICJGYWlsZWQgdG8gbWF0Y2ggY2xhdXNlIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKwor
ICAhJG9tcCB0ZWFtcyB0aHJlYWRfbGltaXQgKDIsMikgICEgeyBkZy1lcnJvciAiV2l0aG91
dCB0aGUgRElNIG1vZGlmaWVyLCBvbmx5IGEgc2luZ2xlIGludGVnZXIgZXhwcmVzc2lvbiBt
YXkgYmUgc3BlY2lmaWVkIiB9CisgIGJsb2NrOyBlbmQgYmxvY2sKKworICAhJG9tcCBwYXJh
bGxlbCBudW1fdGhyZWFkcyAoMiwyKSAgISBPSworICBibG9jazsgZW5kIGJsb2NrCitlbmQK


--------------3ucEhVCS4Xix0ekOx7wDyM8q--