Bug#1143559: rust-dtui - build-depends unsatisfiable in sid due to chumsky update.

Christopher Obbard <[email protected]> Tue, 04 Aug 2026 16:18:43 +0100
Newsgroups gmane.linux.debian.devel.bugs.rc
Message-ID <[email protected]>
--=-AqHGswZCE8QwUbiwmAAr
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Control: tags -1 + patch


Hi Peter,

On Tue, 2026-08-04 at 08:47 +0100, Peter Green wrote:
> Package: rust-dtui
> Version: 3.0.0-3
> Severity: serious
> Tags: ftbfs
> x-debbugs-cc: [email protected]
>=20
> rust-chumsky was recently updated to 0.13, leaving the build-depends
> of rust-dtui unsatisfiable.
>=20
> I've looked at updating but it looks non-trivial, the upstream changelog
> says that 0.10 was a rewrite and bumping the dependency results in a wall
> of errors.
>=20
> I've also filed an upstream issue at https://github.com/Troels51/dtui/iss=
ues/14
>=20
> Maybe we have to introduce a semver-suffix package here.

Please find attached a patch which allows dtui to use the new 0.13 API.

It builds locally with cargo and the upstream repo; but I didn't have time =
to integrate into debcargo-config.


Cheers!

Chris

--=-AqHGswZCE8QwUbiwmAAr
Content-Disposition: attachment; filename="0001-bump-chumsky-to-0.13.patch"
Content-Transfer-Encoding: base64
Content-Type: text/x-patch; name="0001-bump-chumsky-to-0.13.patch"; charset="UTF-8"

RnJvbSAwZTZhOWY0OWZmZjQyYWE2ZWE0M2U5ZTViNzI2NTg0YzVlNDhiZmQ5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpc3RvcGhlciBPYmJhcmQgPG9iYmFyZGNAZGViaWFuLm9y
Zz4KRGF0ZTogVHVlLCA0IEF1ZyAyMDI2IDE1OjU5OjU0ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
YnVtcCBjaHVtc2t5IHRvIDAuMTMKCkNsb3NlczogIzExNDM1NTkKU2lnbmVkLW9mZi1ieTogQ2hy
aXN0b3BoZXIgT2JiYXJkIDxvYmJhcmRjQGRlYmlhbi5vcmc+Ci0tLQogQ2FyZ28udG9tbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmluL2R0dWkvY29tcG9uZW50cy9j
YWxsX3ZpZXcucnMgfCAgMzUgKy0tCiBzcmMvYmluL2R0dWkvbWVzc2FnZXMucnMgICAgICAgICAg
ICAgfCAgIDEgLQogc3JjL2Jpbi9kdHVpL3BhcnNlci5ycyAgICAgICAgICAgICAgIHwgMzEwICsr
KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxNTkgaW5zZXJ0aW9u
cygrKSwgMTg5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0NhcmdvLnRvbWwgYi9DYXJnby50
b21sCmluZGV4IGQxOTRlYjIuLjI1ZjRmMDIgMTAwNjQ0Ci0tLSBhL0NhcmdvLnRvbWwKKysrIGIv
Q2FyZ28udG9tbApAQCAtMjgsNyArMjgsNyBAQCB0cmFjaW5nID0gIjAuMS40MSIKIHRyYWNpbmct
c3Vic2NyaWJlciA9IHsgdmVyc2lvbiA9ICIwLjMuMjAiLCBmZWF0dXJlcyA9IFsiZW52LWZpbHRl
ciIsICJqc29uIiwgImZtdCJdIH0KIHRyYWNpbmctam91cm5hbGQgPSAiMC4zLjEiCiB0dWktdGV4
dGFyZWEgPSAiMC43IgotY2h1bXNreSA9ICIwLjkuMyIKK2NodW1za3kgPSAiMC4xMyIKIHpidXMg
PSB7dmVyc2lvbiA9ICI1LjExLjAiLCBmZWF0dXJlcyA9IFsidG9raW8iLCAic2VyZGVfYnl0ZXMi
XX0KIHpidXNfbmFtZXMgPSAiNC4yLjAiCiB6YnVzX3htbCA9ICI1LjAuMiIKZGlmZiAtLWdpdCBh
L3NyYy9iaW4vZHR1aS9jb21wb25lbnRzL2NhbGxfdmlldy5ycyBiL3NyYy9iaW4vZHR1aS9jb21w
b25lbnRzL2NhbGxfdmlldy5ycwppbmRleCBjODMzMjEwLi5jNGJjZjMwIDEwMDY0NAotLS0gYS9z
cmMvYmluL2R0dWkvY29tcG9uZW50cy9jYWxsX3ZpZXcucnMKKysrIGIvc3JjL2Jpbi9kdHVpL2Nv
bXBvbmVudHMvY2FsbF92aWV3LnJzCkBAIC0yNCwxMCArMjQsMTkgQEAgdXNlIGNyYXRlOjp7CiAK
IHB1YiBzdHJ1Y3QgTWV0aG9kQXJnVmlzdWFsIHsKICAgICBwdWIgdGV4dF9hcmVhOiB0dWlfdGV4
dGFyZWE6OlRleHRBcmVhPCdzdGF0aWM+LAotICAgIHB1YiBwYXJzZXI6Ci0gICAgICAgIEJveDxk
eW4gUGFyc2VyPGNoYXIsIHpidXM6Onp2YXJpYW50OjpWYWx1ZTwnc3RhdGljPiwgRXJyb3IgPSBj
aHVtc2t5OjplcnJvcjo6U2ltcGxlPGNoYXI+Pj4sCisgICAgLy8gY2h1bXNreSBwYXJzZXJzIGJv
cnJvdyBmcm9tIHRoZSBpbnB1dCB0aGV5IHBhcnNlLCBzbyB3ZSBrZWVwIHRoZSBzaWduYXR1cmUg
YXJvdW5kIGFuZAorICAgIC8vIGJ1aWxkIGEgcGFyc2VyIG9uIGRlbWFuZCBpbnN0ZWFkIG9mIHN0
b3Jpbmcgb25lLgorICAgIHB1YiBzaWduYXR1cmU6IHpidXM6Onp2YXJpYW50OjpTaWduYXR1cmUs
CiAgICAgcHViIGlzX2lucHV0OiBib29sLCAvLyBJcyB0aGlzIEFyZyBhbiBpbnB1dCBvciBvdXRw
dXQKIH0KKworaW1wbCBNZXRob2RBcmdWaXN1YWwgeworICAgIGZuIHBhcnNlKCZzZWxmKSAtPiBS
ZXN1bHQ8emJ1czo6enZhcmlhbnQ6OlZhbHVlPCdzdGF0aWM+LCBWZWM8Y2h1bXNreTo6ZXJyb3I6
OlJpY2g8J18sIGNoYXI+Pj4geworICAgICAgICBnZXRfcGFyc2VyKHNlbGYuc2lnbmF0dXJlLmNs
b25lKCkpCisgICAgICAgICAgICAucGFyc2Uoc2VsZi50ZXh0X2FyZWEubGluZXMoKVswXS5hc19z
dHIoKSkKKyAgICAgICAgICAgIC5pbnRvX3Jlc3VsdCgpCisgICAgfQorfQogLy8gRW5jYXBzdWxh
dGVzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb25nb2luZyBjYWxsCiBzdHJ1Y3QgT25nb2lu
Z0NhbGxJbmZvIHsKICAgICBpbnZvY2F0aW9uOiBJbnZvY2F0aW9uLApAQCAtNjMsMTcgKzcyLDE2
IEBAIGltcGwgT25nb2luZ0NhbGxJbmZvIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu
dGl0bGUoZm9ybWF0ISgibmFtZToge30gfCB7fSIsIGFyZy5uYW1lKCkudW53cmFwKCksIGlub3V0
KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGl0bGVfYm90dG9tKGZvcm1hdCEoInR5
cGU6IHt9IiwgYXJnLnR5KCkudG9fc3RyaW5nKCkpKSwKICAgICAgICAgICAgICAgICAgICAgKTsK
LSAgICAgICAgICAgICAgICAgICAgbGV0IHBhcnNlciA9IGdldF9wYXJzZXIoCisgICAgICAgICAg
ICAgICAgICAgIGxldCBzaWduYXR1cmUgPQogICAgICAgICAgICAgICAgICAgICAgICAgemJ1czo6
enZhcmlhbnQ6OlNpZ25hdHVyZTo6ZnJvbV9zdHIoYXJnLnR5KCkudG9fc3RyaW5nKCkuYXNfc3Ry
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmV4cGVjdCgiVGhlIHR5cGUgZGVzY3Jp
cHRpb24gZm9yIHRoZSBtZXRob2Qgd2UgZ290IHdhcyBub3QgZ29vZCIpLAotICAgICAgICAgICAg
ICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5leHBlY3QoIlRoZSB0eXBl
IGRlc2NyaXB0aW9uIGZvciB0aGUgbWV0aG9kIHdlIGdvdCB3YXMgbm90IGdvb2QiKTsKICAgICAg
ICAgICAgICAgICAgICAgbGV0IGlucHV0ID0gbWF0Y2ggYXJnLmRpcmVjdGlvbigpLnVud3JhcF9v
cih6YnVzX3htbDo6QXJnRGlyZWN0aW9uOjpJbikgewogICAgICAgICAgICAgICAgICAgICAgICAg
emJ1c194bWw6OkFyZ0RpcmVjdGlvbjo6SW4gPT4gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIHpidXNfeG1sOjpBcmdEaXJlY3Rpb246Ok91dCA9PiBmYWxzZSwKICAgICAgICAgICAgICAg
ICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgY2FsbF9pbmZvLm1ldGhvZF9hcmdfdmlzLnB1
c2goTWV0aG9kQXJnVmlzdWFsIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRfYXJlYSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcjogQm94OjpuZXcocGFyc2VyKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGlz
X2lucHV0OiBpbnB1dCwKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAg
fQpAQCAtOTAsMTMgKzk4LDEyIEBAIGltcGwgT25nb2luZ0NhbGxJbmZvIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIC50aXRsZShmb3JtYXQhKCJuYW1lOiB7fSB8IHt9IiwgcHJvcGVydHkubmFt
ZSgpLCAiaW5wdXQiKSkKICAgICAgICAgICAgICAgICAgICAgICAgIC50aXRsZV9ib3R0b20oZm9y
bWF0ISgidHlwZToge30iLCBwcm9wZXJ0eS50eSgpLnRvX3N0cmluZygpKSksCiAgICAgICAgICAg
ICAgICAgKTsKLSAgICAgICAgICAgICAgICBsZXQgcGFyc2VyID0gQm94OjpuZXcoZ2V0X3BhcnNl
cigKKyAgICAgICAgICAgICAgICBsZXQgc2lnbmF0dXJlID0KICAgICAgICAgICAgICAgICAgICAg
emJ1czo6enZhcmlhbnQ6OlNpZ25hdHVyZTo6ZnJvbV9zdHIocHJvcGVydHkudHkoKS50b19zdHJp
bmcoKS5hc19zdHIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIC5leHBlY3QoIlRoZSB0eXBl
IGRlc2NyaXB0aW9uIGZvciB0aGUgbWV0aG9kIHdlIGdvdCB3YXMgbm90IGdvb2QiKSwKLSAgICAg
ICAgICAgICAgICApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC5leHBlY3QoIlRoZSB0eXBl
IGRlc2NyaXB0aW9uIGZvciB0aGUgbWV0aG9kIHdlIGdvdCB3YXMgbm90IGdvb2QiKTsKICAgICAg
ICAgICAgICAgICBjYWxsX2luZm8ubWV0aG9kX2FyZ192aXMucHVzaChNZXRob2RBcmdWaXN1YWwg
ewogICAgICAgICAgICAgICAgICAgICB0ZXh0X2FyZWEsCi0gICAgICAgICAgICAgICAgICAgIHBh
cnNlciwKKyAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlLAogICAgICAgICAgICAgICAgICAg
ICBpc19pbnB1dDogdHJ1ZSwKICAgICAgICAgICAgICAgICB9KTsKIApAQCAtMTYxLDkgKzE2OCw3
IEBAIGltcGwgQ2FsbFZpZXcgewogICAgICAgICBsZXQgc2VnbWVudHMgPSBzaW5nbGVfbGluZV9s
YXlvdXQuc3BsaXQoYXJlYSk7CiAgICAgICAgIGZvciAoaSwgaW5wdXQpIGluIG9uZ29pbmcubWV0
aG9kX2FyZ192aXMuaXRlcl9tdXQoKS5lbnVtZXJhdGUoKSB7CiAgICAgICAgICAgICBsZXQgZW1w
aGFzaXMgPSBpZiBpID09IG9uZ29pbmcuc2VsZWN0ZWQgJiYgYWN0aXZlIHsKLSAgICAgICAgICAg
ICAgICBsZXQgbWV0aG9kX2FyZzogU3RyaW5nID0gaW5wdXQudGV4dF9hcmVhLmxpbmVzKClbMF0u
Y2xvbmUoKTsKLSAgICAgICAgICAgICAgICBsZXQgcGFyc2VkID0gaW5wdXQucGFyc2VyLnBhcnNl
KG1ldGhvZF9hcmcpOwotICAgICAgICAgICAgICAgIG1hdGNoIHBhcnNlZCB7CisgICAgICAgICAg
ICAgICAgbWF0Y2ggaW5wdXQucGFyc2UoKSB7CiAgICAgICAgICAgICAgICAgICAgIE9rKF8pID0+
IFN0eWxlOjpkZWZhdWx0KCkuZmcoQ29sb3I6OkdyZWVuKSwKICAgICAgICAgICAgICAgICAgICAg
RXJyKF8pID0+IFN0eWxlOjpkZWZhdWx0KCkuZmcoQ29sb3I6OlJlZCksCiAgICAgICAgICAgICAg
ICAgfQpAQCAtMjMwLDExICsyMzUsMTEgQEAgaW1wbCBDb21wb25lbnQgZm9yIENhbGxWaWV3IHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWV0aG9kX2FyZ192aXMKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAuaXRlcigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZp
bHRlcih8aW5wdXR8IGlucHV0LmlzX2lucHV0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC5tYXAofGlucHV0fCBpbnB1dC5wYXJzZXIucGFyc2UoaW5wdXQudGV4dF9hcmVhLmxpbmVzKClb
MF0uY2xvbmUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAofGlucHV0fCBp
bnB1dC5wYXJzZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcnNlcy5jbG9uZSgp
LmFsbCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8cmVzdWx0OiBSZXN1bHQ8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpidXM6Onp2YXJpYW50OjpWYWx1ZTwnc3RhdGlj
PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjPGNodW1za3k6OmVycm9yOjpT
aW1wbGU8Y2hhcj4+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWM8Y2h1bXNr
eTo6ZXJyb3I6OlJpY2g8J18sIGNoYXI+PiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+
fCBSZXN1bHQ6OmlzX29rKCZyZXN1bHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlczogVmVjPHpidXM6Onp2YXJpYW50
OjpPd25lZFZhbHVlPiA9IHBhcnNlcwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9kdHVpL21lc3NhZ2Vz
LnJzIGIvc3JjL2Jpbi9kdHVpL21lc3NhZ2VzLnJzCmluZGV4IDY4NDMzMWMuLjg1YmYwZDAgMTAw
NjQ0Ci0tLSBhL3NyYy9iaW4vZHR1aS9tZXNzYWdlcy5ycworKysgYi9zcmMvYmluL2R0dWkvbWVz
c2FnZXMucnMKQEAgLTEsNiArMSw1IEBACiB1c2Ugc3RkOjpjb2xsZWN0aW9uczo6SGFzaE1hcDsK
IAotdXNlIGNodW1za3k6OmNoYWluOjpDaGFpbjsKIHVzZSB6YnVzOjp7CiAgICAgbmFtZXM6OntP
d25lZEJ1c05hbWUsIE93bmVkSW50ZXJmYWNlTmFtZSwgT3duZWRNZW1iZXJOYW1lfSwKICAgICB6
dmFyaWFudDo6e093bmVkT2JqZWN0UGF0aCwgT3duZWRWYWx1ZX0sCmRpZmYgLS1naXQgYS9zcmMv
YmluL2R0dWkvcGFyc2VyLnJzIGIvc3JjL2Jpbi9kdHVpL3BhcnNlci5ycwppbmRleCAyMDU5NzRm
Li5iMDk4MTM5IDEwMDY0NAotLS0gYS9zcmMvYmluL2R0dWkvcGFyc2VyLnJzCisrKyBiL3NyYy9i
aW4vZHR1aS9wYXJzZXIucnMKQEAgLTEsNyArMSwxMyBAQAordXNlIGNodW1za3k6OmlucHV0OjpJ
bnB1dFJlZjsKIHVzZSBjaHVtc2t5OjpwcmVsdWRlOjoqOwogdXNlIHN0ZDo6e2NvbGxlY3Rpb25z
OjpIYXNoTWFwLCBzdHI6OkZyb21TdHIsIHUzMn07CiB1c2UgemJ1czo6enZhcmlhbnQ6OntzZWxm
LCBPYmplY3RQYXRoLCBTaWduYXR1cmUsIFN0cnVjdHVyZUJ1aWxkZXJ9OwogCisvLy8gVGhlIGV4
dHJhIHBhcnNlciBzdGF0ZSB1c2VkIGJ5IGV2ZXJ5IHBhcnNlciBpbiB0aGlzIG1vZHVsZS4KK3R5
cGUgRXh0cmE8J3NyYz4gPSBleHRyYTo6RXJyPFJpY2g8J3NyYywgY2hhcj4+OworLy8vIEEgYm94
ZWQgcGFyc2VyIG92ZXIgYSBzdHJpbmcgaW5wdXQsIHByb2R1Y2luZyBhIGRidXMgdmFsdWUuCit0
eXBlIFZhbHVlUGFyc2VyPCdzcmM+ID0gQm94ZWQ8J3NyYywgJ3NyYywgJidzcmMgc3RyLCB6dmFy
aWFudDo6VmFsdWU8J3N0YXRpYz4sIEV4dHJhPCdzcmM+PjsKKwogLy8vIENyZWF0ZSBhIHBhcnNl
ciBmcm9tIGEgU2lnbmF0dXJlLgogLy8vIFRoZSBsYW5ndWFnZSB0aGF0IHRoaXMgcGFyc2VzIGlz
IGEgaHVtYW4gcmVhZGFibGUgdmVyc2lvbiBvZiB0aGUgZGJ1cyBmb3JtYXQuCiAvLy8gQXJyYXlz
IGFyZSBkZWxpbWl0ZWQgYnkgW10sIHdpdGggdmFsdWVzIHNlcGVyYXRlZCBieSAiLCIKQEAgLTE0
LDEyICsyMCwxMCBAQCB1c2UgemJ1czo6enZhcmlhbnQ6OntzZWxmLCBPYmplY3RQYXRoLCBTaWdu
YXR1cmUsIFN0cnVjdHVyZUJ1aWxkZXJ9OwogLy8vCiAvLy8gYGBgCiAvLy8gbGV0IHNpZ25hdHVy
ZSA9IFNpZ25hdHVyZTo6ZnJvbV9zdHIoImFzIikudW53cmFwKCk7Ci0vLy8gbGV0IHJlc3VsdCA9
IGdldF9wYXJzZXIoc2lnbmF0dXJlKS5wYXJzZSgiW1wiZmlyc3RcIiwgXCJzZWNvbmRcIl0iKTsK
Ky8vLyBsZXQgcmVzdWx0ID0gZ2V0X3BhcnNlcihzaWduYXR1cmUpLnBhcnNlKCJbXCJmaXJzdFwi
LCBcInNlY29uZFwiXSIpLmludG9fcmVzdWx0KCk7CiAvLy8gYXNzZXJ0X2VxIShyZXN1bHQsIE9r
KHp2YXJpYW50OjpWYWx1ZTo6QXJyYXkodmVjIVsiZmlyc3QiLCAic2Vjb25kIl0uaW50bygpKSkp
OwogLy8vIGBgYAotcHViIGZuIGdldF9wYXJzZXIoCi0gICAgc2lnbmF0dXJlOiBTaWduYXR1cmUs
Ci0pIC0+IGltcGwgUGFyc2VyPGNoYXIsIHp2YXJpYW50OjpWYWx1ZTwnc3RhdGljPiwgRXJyb3Ig
PSBTaW1wbGU8Y2hhcj4+IHsKK3B1YiBmbiBnZXRfcGFyc2VyPCdzcmM+KHNpZ25hdHVyZTogU2ln
bmF0dXJlKSAtPiBWYWx1ZVBhcnNlcjwnc3JjPiB7CiAgICAgbWF0Y2ggc2lnbmF0dXJlIHsKICAg
ICAgICAgenZhcmlhbnQ6OlNpZ25hdHVyZTo6VW5pdCA9PiB0b2RvISgpLAogICAgICAgICB6dmFy
aWFudDo6U2lnbmF0dXJlOjpVOCA9PiBwYXJzZXJfdTgoKS5ib3hlZCgpLApAQCAtMzQsNyArMzgs
NyBAQCBwdWIgZm4gZ2V0X3BhcnNlcigKICAgICAgICAgenZhcmlhbnQ6OlNpZ25hdHVyZTo6U3Ry
ID0+IHBhcnNlcl9zdHJpbmcoKS5ib3hlZCgpLAogICAgICAgICB6dmFyaWFudDo6U2lnbmF0dXJl
OjpTaWduYXR1cmUgPT4gcGFyc2VyX3NpZ25hdHVyZSgpLmJveGVkKCksCiAgICAgICAgIHp2YXJp
YW50OjpTaWduYXR1cmU6Ok9iamVjdFBhdGggPT4gcGFyc2VyX29iamVjdF9wYXRoKCkuYm94ZWQo
KSwKLSAgICAgICAgenZhcmlhbnQ6OlNpZ25hdHVyZTo6VmFyaWFudCA9PiBwYXJzZXJfdmFyaWFu
dCgpLmJveGVkKCksCisgICAgICAgIHp2YXJpYW50OjpTaWduYXR1cmU6OlZhcmlhbnQgPT4gcGFy
c2VyX3ZhcmlhbnQoKSwKICAgICAgICAgenZhcmlhbnQ6OlNpZ25hdHVyZTo6RmQgPT4gcGFyc2Vy
X2ZkKCkuYm94ZWQoKSwKICAgICAgICAgenZhcmlhbnQ6OlNpZ25hdHVyZTo6QXJyYXkoY2hpbGQp
ID0+IHBhcnNlcl9hcnJheShjaGlsZC5zaWduYXR1cmUoKS5jbG9uZSgpKS5ib3hlZCgpLAogICAg
ICAgICB6dmFyaWFudDo6U2lnbmF0dXJlOjpEaWN0IHsga2V5LCB2YWx1ZSB9ID0+IHsKQEAgLTQ0
LDMzICs0OCw0NSBAQCBwdWIgZm4gZ2V0X3BhcnNlcigKICAgICB9CiB9CiAKLWZuIHBhcnNlcl92
YXJpYW50PCdhPigpIC0+IGltcGwgUGFyc2VyPGNoYXIsIHp2YXJpYW50OjpWYWx1ZTwnc3RhdGlj
PiwgRXJyb3IgPSBTaW1wbGU8Y2hhcj4+IHsKLSAgICBwYXJzZXJfc2lnbmF0dXJlKCkKLSAgICAg
ICAgLmJveGVkKCkKLSAgICAgICAgLnRoZW5faWdub3JlKGp1c3QoIi0+IikpCi0gICAgICAgIC50
aGVuX3dpdGgofHN8IG1hdGNoIHMgewotICAgICAgICAgICAgenZhcmlhbnQ6OlZhbHVlOjpTaWdu
YXR1cmUoc2lnbmF0dXJlKSA9PiB7Ci0gICAgICAgICAgICAgICAgZ2V0X3BhcnNlcihzaWduYXR1
cmUpLm1hcCh8dmFyaWFudHwgenZhcmlhbnQ6OlZhbHVlOjpWYWx1ZShCb3g6Om5ldyh2YXJpYW50
KSkpCi0gICAgICAgICAgICB9CisvLy8gVGhlIGlubmVyIHBhcnNlciBvZiBhIHZhcmlhbnQgZGVw
ZW5kcyBvbiB0aGUgc2lnbmF0dXJlIHRoYXQgcHJlY2VkZXMgaXQsIHNvIGl0IGNhbiBvbmx5IGJl
CisvLy8gYnVpbHQgb25jZSB0aGF0IHNpZ25hdHVyZSBoYXMgYmVlbiBwYXJzZWQuIGBjdXN0b21g
IGdpdmVzIHVzIGFjY2VzcyB0byB0aGUgaW5wdXQgc28gd2UgY2FuCisvLy8gcnVuIGEgcGFyc2Vy
IHRoYXQgaXMgY29uc3RydWN0ZWQgb24gdGhlIGZseS4KK2ZuIHBhcnNlcl92YXJpYW50PCdzcmM+
KCkgLT4gVmFsdWVQYXJzZXI8J3NyYz4geworICAgIGN1c3RvbTo6PF8sICYnc3JjIHN0ciwgXywg
RXh0cmE8J3NyYz4+KHxpbnB1dDogJm11dCBJbnB1dFJlZjwnc3JjLCAnXywgXywgXz58IHsKKyAg
ICAgICAgbGV0IHNpZ25hdHVyZSA9IG1hdGNoIGlucHV0LnBhcnNlKHBhcnNlcl9zaWduYXR1cmUo
KSk/IHsKKyAgICAgICAgICAgIHp2YXJpYW50OjpWYWx1ZTo6U2lnbmF0dXJlKHNpZ25hdHVyZSkg
PT4gc2lnbmF0dXJlLAogICAgICAgICAgICAgXyA9PiB1bnJlYWNoYWJsZSEoKSwKLSAgICAgICAg
fSkKKyAgICAgICAgfTsKKyAgICAgICAgaW5wdXQucGFyc2UoanVzdCgiLT4iKSk/OworICAgICAg
ICBsZXQgdmFsdWUgPSBpbnB1dC5wYXJzZShnZXRfcGFyc2VyKHNpZ25hdHVyZSkpPzsKKyAgICAg
ICAgT2soenZhcmlhbnQ6OlZhbHVlOjpWYWx1ZShCb3g6Om5ldyh2YWx1ZSkpKQorICAgIH0pCisg
ICAgLmJveGVkKCkKIH0KIC8vCi1mbiBwYXJzZXJfc3RydWN0PCdhPigKK2ZuIHBhcnNlcl9zdHJ1
Y3Q8J3NyYz4oCiAgICAgc3RydWN0dXJlOiB6dmFyaWFudDo6c2lnbmF0dXJlOjpGaWVsZHMsCi0p
IC0+IGltcGwgUGFyc2VyPGNoYXIsIHp2YXJpYW50OjpWYWx1ZTwnYT4sIEVycm9yID0gU2ltcGxl
PGNoYXI+PiB7CispIC0+IGltcGwgUGFyc2VyPCdzcmMsICYnc3JjIHN0ciwgenZhcmlhbnQ6OlZh
bHVlPCdzdGF0aWM+LCBFeHRyYTwnc3JjPj4gKyBDbG9uZSB7CiAgICAgbGV0IG11dCBlbGVtZW50
X3BhcnNlcnMgPSBzdHJ1Y3R1cmUKICAgICAgICAgLml0ZXIoKQogICAgICAgICAubWFwKHxzaWdu
YXR1cmU6ICZ6YnVzOjp6dmFyaWFudDo6U2lnbmF0dXJlfCBnZXRfcGFyc2VyKHNpZ25hdHVyZS5j
bG9uZSgpKSk7Ci0gICAgbGV0IG11dCBmdWxsX3BhcnNlciA9IGp1c3QoJygnKS5tYXAofF98IFZl
Yzo6PHp2YXJpYW50OjpWYWx1ZTwnXz4+OjpuZXcoKSkuYm94ZWQoKTsgLy8gVGhlIG1hcCBpcyB0
aGVyZSB0byBnZXQgdHlwZXMgdG8gbWF0Y2ggYXMgdGhlIGNoYWluIGluIHRoZSBsb29wIG5lZWRz
IHRoZSBwYXJzZXIgdG8gb3V0cHV0IGEgVmVjCi0gICAgZnVsbF9wYXJzZXIgPSBmdWxsX3BhcnNl
ci5jaGFpbihlbGVtZW50X3BhcnNlcnMubmV4dCgpLnVud3JhcCgpKS5ib3hlZCgpOyAvLyBUaGUg
Zmlyc3QgZG9lc250IGdldCBhICcsJyB0aGUgcmVzdCBkbworICAgIC8vIFRoZSBmaXJzdCBlbGVt
ZW50IGRvZXNuJ3QgZ2V0IGEgJywnIHRoZSByZXN0IGRvCisgICAgbGV0IG11dCBmdWxsX3BhcnNl
ciA9IGVsZW1lbnRfcGFyc2VycworICAgICAgICAubmV4dCgpCisgICAgICAgIC51bndyYXAoKQor
ICAgICAgICAubWFwKHx2YWx1ZXwgdmVjIVt2YWx1ZV0pCisgICAgICAgIC5ib3hlZCgpOwogICAg
IGZvciBlbGVtZW50X3BhcnNlciBpbiBlbGVtZW50X3BhcnNlcnMgewogICAgICAgICBmdWxsX3Bh
cnNlciA9IGZ1bGxfcGFyc2VyCiAgICAgICAgICAgICAudGhlbl9pZ25vcmUoanVzdCgiLCIpLnBh
ZGRlZCgpKQotICAgICAgICAgICAgLmNoYWluKGVsZW1lbnRfcGFyc2VyKQorICAgICAgICAgICAg
LnRoZW4oZWxlbWVudF9wYXJzZXIpCisgICAgICAgICAgICAubWFwKHwobXV0IGZpZWxkcywgZmll
bGQpfCB7CisgICAgICAgICAgICAgICAgZmllbGRzLnB1c2goZmllbGQpOworICAgICAgICAgICAg
ICAgIGZpZWxkcworICAgICAgICAgICAgfSkKICAgICAgICAgICAgIC5ib3hlZCgpOwogICAgIH0K
LSAgICBmdWxsX3BhcnNlciA9IGZ1bGxfcGFyc2VyLnRoZW5faWdub3JlKGp1c3QoJyknKS5wYWRk
ZWQoKSkuYm94ZWQoKTsKKyAgICBsZXQgZnVsbF9wYXJzZXIgPSBmdWxsX3BhcnNlci5kZWxpbWl0
ZWRfYnkoanVzdCgnKCcpLnBhZGRlZCgpLCBqdXN0KCcpJykucGFkZGVkKCkpOwogCiAgICAgZnVs
bF9wYXJzZXIubWFwKHxmaWVsZHN8IHsKICAgICAgICAgbGV0IG11dCBidWlsZGVyID0gU3RydWN0
dXJlQnVpbGRlcjo6bmV3KCk7CkBAIC04MCwxMCArOTYsMTAgQEAgZm4gcGFyc2VyX3N0cnVjdDwn
YT4oCiAgICAgICAgIHp2YXJpYW50OjpWYWx1ZTo6U3RydWN0dXJlKGJ1aWxkZXIuYnVpbGQoKS51
bndyYXAoKSkKICAgICB9KQogfQotZm4gcGFyc2VyX2RpY3Q8J2E+KAorZm4gcGFyc2VyX2RpY3Q8
J3NyYz4oCiAgICAga2V5X3R5cGU6IFNpZ25hdHVyZSwKICAgICB2YWx1ZV90eXBlOiBTaWduYXR1
cmUsCi0pIC0+IGltcGwgUGFyc2VyPGNoYXIsIHp2YXJpYW50OjpWYWx1ZTwnYT4sIEVycm9yID0g
U2ltcGxlPGNoYXI+PiB7CispIC0+IGltcGwgUGFyc2VyPCdzcmMsICYnc3JjIHN0ciwgenZhcmlh
bnQ6OlZhbHVlPCdzdGF0aWM+LCBFeHRyYTwnc3JjPj4gKyBDbG9uZSB7CiAgICAgbGV0IGtleV9w
YXJzZXIgPSBnZXRfcGFyc2VyKGtleV90eXBlLmNsb25lKCkpOwogICAgIGxldCB2YWx1ZV9wYXJz
ZXIgPSBnZXRfcGFyc2VyKHZhbHVlX3R5cGUuY2xvbmUoKSk7CiAgICAgbGV0IG1lbWJlcl9wYXJz
ZXIgPSBrZXlfcGFyc2VyCkBAIC05MSwxMiArMTA3LDkgQEAgZm4gcGFyc2VyX2RpY3Q8J2E+KAog
ICAgICAgICAudGhlbih2YWx1ZV9wYXJzZXIpCiAgICAgICAgIC5ib3hlZCgpOwogICAgIG1lbWJl
cl9wYXJzZXIKLSAgICAgICAgLmNsb25lKCkKLSAgICAgICAgLmNoYWluKGp1c3QoJywnKS5wYWRk
ZWQoKS5pZ25vcmVfdGhlbihtZW1iZXJfcGFyc2VyKS5yZXBlYXRlZCgpKQotICAgICAgICAub3Jf
bm90KCkKLSAgICAgICAgLmZsYXR0ZW4oKQorICAgICAgICAuc2VwYXJhdGVkX2J5KGp1c3QoJywn
KS5wYWRkZWQoKSkKKyAgICAgICAgLmNvbGxlY3Q6OjxIYXNoTWFwPHp2YXJpYW50OjpWYWx1ZTwn
c3RhdGljPiwgenZhcmlhbnQ6OlZhbHVlPCdzdGF0aWM+Pj4oKQogICAgICAgICAuZGVsaW1pdGVk
X2J5KGp1c3QoJ3snKS5wYWRkZWQoKSwganVzdCgnfScpLnBhZGRlZCgpKQotICAgICAgICAuY29s
bGVjdDo6PEhhc2hNYXA8enZhcmlhbnQ6OlZhbHVlPCdfPiwgenZhcmlhbnQ6OlZhbHVlPCdfPj4+
KCkKICAgICAgICAgLm1hcCgKICAgICAgICAgICAgIG1vdmUgfG06IEhhc2hNYXA8enZhcmlhbnQ6
OlZhbHVlPCdfPiwgenZhcmlhbnQ6OlZhbHVlPCdfPj58IHsKICAgICAgICAgICAgICAgICBsZXQg
bXV0IGRpY3QgPQpAQCAtMTA5LDIwICsxMjIsMTMgQEAgZm4gcGFyc2VyX2RpY3Q8J2E+KAogICAg
ICAgICApCiB9CiAKLWZuIHBhcnNlcl9hcnJheTwnYT4oCitmbiBwYXJzZXJfYXJyYXk8J3NyYz4o
CiAgICAgc2lnbmF0dXJlOiBTaWduYXR1cmUsCi0pIC0+IGltcGwgUGFyc2VyPGNoYXIsIHp2YXJp
YW50OjpWYWx1ZTwnYT4sIEVycm9yID0gU2ltcGxlPGNoYXI+PiB7Ci0gICAgbGV0IGVsZW1lbnRf
cGFyc2VyID0gZ2V0X3BhcnNlcihzaWduYXR1cmUuY2xvbmUoKSkuYm94ZWQoKTsKKykgLT4gaW1w
bCBQYXJzZXI8J3NyYywgJidzcmMgc3RyLCB6dmFyaWFudDo6VmFsdWU8J3N0YXRpYz4sIEV4dHJh
PCdzcmM+PiArIENsb25lIHsKKyAgICBsZXQgZWxlbWVudF9wYXJzZXIgPSBnZXRfcGFyc2VyKHNp
Z25hdHVyZS5jbG9uZSgpKTsKICAgICBlbGVtZW50X3BhcnNlcgotICAgICAgICAuY2xvbmUoKQot
ICAgICAgICAuY2hhaW4oCi0gICAgICAgICAgICBqdXN0KCcsJykKLSAgICAgICAgICAgICAgICAu
cGFkZGVkKCkKLSAgICAgICAgICAgICAgICAuaWdub3JlX3RoZW4oZWxlbWVudF9wYXJzZXIuY2xv
bmUoKSkKLSAgICAgICAgICAgICAgICAucmVwZWF0ZWQoKSwKLSAgICAgICAgKQotICAgICAgICAu
b3Jfbm90KCkKLSAgICAgICAgLmZsYXR0ZW4oKQorICAgICAgICAuc2VwYXJhdGVkX2J5KGp1c3Qo
JywnKS5wYWRkZWQoKSkKKyAgICAgICAgLmNvbGxlY3Q6OjxWZWM8enZhcmlhbnQ6OlZhbHVlPCdz
dGF0aWM+Pj4oKQogICAgICAgICAuZGVsaW1pdGVkX2J5KGp1c3QoJ1snKSwganVzdCgnXScpKQog
ICAgICAgICAubWFwKG1vdmUgfHY6IFZlYzx6dmFyaWFudDo6VmFsdWU8J18+PnwgewogICAgICAg
ICAgICAgbGV0IG11dCBhcnJheTogenZhcmlhbnQ6OkFycmF5PCdfPiA9IHp2YXJpYW50OjpBcnJh
eTo6bmV3KCZzaWduYXR1cmUpOwpAQCAtMTM2LDIwMSArMTQyLDE2MSBAQCBmbiBwYXJzZXJfYXJy
YXk8J2E+KAogfQogLy8gVE9ETzogQ2FuIHRoZXNlIGJlIG1hZGUgZ2VuZXJpYywgbm90IHN1cmUg
aG93IGFzIHRoZXkgYXJlIGdlbmVyaWMgb3ZlciB0aGUgVmFsdWUgdHlwZSB3aGljaCBpcyBlbnVt
cwogLy8gVE9ETzogVmFsaWRhdGlvbiBvbiBzaXplcyBvZiBudW1iZXJzCi1mbiBwYXJzZXJfdTgo
KSAtPiBpbXBsIFBhcnNlcjxjaGFyLCB6dmFyaWFudDo6VmFsdWU8J3N0YXRpYz4sIEVycm9yID0g
U2ltcGxlPGNoYXI+PiB7CitmbiBwYXJzZXJfdTg8J3NyYz4oKSAtPiBpbXBsIFBhcnNlcjwnc3Jj
LCAmJ3NyYyBzdHIsIHp2YXJpYW50OjpWYWx1ZTwnc3RhdGljPiwgRXh0cmE8J3NyYz4+ICsgQ2xv
bmUgewogICAgIHRleHQ6OmRpZ2l0cygxMCkKKyAgICAgICAgLnRvX3NsaWNlKCkKICAgICAgICAg
LmxhYmVsbGVkKCJ1OCIpCi0gICAgICAgIC5tYXAofHM6IFN0cmluZ3wgenZhcmlhbnQ6OlZhbHVl
OjpVOChzLnBhcnNlKCkudW53cmFwKCkpKQorICAgICAgICAubWFwKHxzOiAmc3RyfCB6dmFyaWFu
dDo6VmFsdWU6OlU4KHMucGFyc2UoKS51bndyYXAoKSkpCiAgICAgICAgIC5wYWRkZWQoKQogfQot
Zm4gcGFyc2VyX3UxNigpIC0+IGltcGwgUGFyc2VyPGNoYXIsIHp2YXJpYW50OjpWYWx1ZTwnc3Rh
dGljPiwgRXJyb3IgPSBTaW1wbGU8Y2hhcj4+IHsKK2ZuIHBhcnNlcl91MTY8J3NyYz4oKSAtPiBp
bXBsIFBhcnNlcjwnc3JjLCAmJ3NyYyBzdHIsIHp2YXJpYW50OjpWYWx1ZTwnc3RhdGljPiwgRXh0
cmE8J3NyYz4+ICsgQ2xvbmUKK3sKICAgICB0ZXh0OjpkaWdpdHMoMTApCisgICAgICAgIC50b19z
bGljZSgpCiAgICAgICAgIC5sYWJlbGxlZCgidTE2IikKLSAgICAgICAgLm1hcCh8czogU3RyaW5n
fCB6dmFyaWFudDo6VmFsdWU6OlUxNihzLnBhcnNlKCkudW53cmFwKCkpKQorICAgICAgICAubWFw
KHxzOiAmc3RyfCB6dmFyaWFudDo6VmFsdWU6OlUxNihzLnBhcnNlKCkudW53cmFwKCkpKQogICAg
ICAgICAucGFkZGVkKCkKIH0KLWZuIHBhcnNlcl9pMTYoKSAtPiBpbXBsIFBhcnNlcjxjaGFyLCB6
dmFyaWFudDo6VmFsdWU8J3N0YXRpYz4sIEVycm9yID0gU2ltcGxlPGNoYXI+PiB7CitmbiBwYXJz
ZXJfaTE2PCdzcmM+KCkgLT4gaW1wbCBQYXJzZXI8J3NyYywgJidzcmMgc3RyLCB6dmFyaWFudDo6
VmFsdWU8J3N0YXRpYz4sIEV4dHJhPCdzcmM+PiArIENsb25lCit7CiAgICAganVzdCgnLScpCiAg
ICAgICAgIC5vcl9ub3QoKQotICAgICAgICAuY2hhaW46OjxjaGFyLCBfLCBfPih0ZXh0OjpkaWdp
dHMoMTApKQotICAgICAgICAuY29sbGVjdDo6PFN0cmluZz4oKQotICAgICAgICAubWFwKHxzOiBT
dHJpbmd8IHp2YXJpYW50OjpWYWx1ZTo6STE2KHMucGFyc2UoKS51bndyYXAoKSkpCisgICAgICAg
IC50aGVuKHRleHQ6OmRpZ2l0cygxMCkpCisgICAgICAgIC50b19zbGljZSgpCisgICAgICAgIC5t
YXAofHM6ICZzdHJ8IHp2YXJpYW50OjpWYWx1ZTo6STE2KHMucGFyc2UoKS51bndyYXAoKSkpCiAg
ICAgICAgIC5sYWJlbGxlZCgiaTE2IikKICAgICAgICAgLnBhZGRlZCgpCiB9Ci1mbiBwYXJzZXJf
dTMyKCkgLT4gaW1wbCBQYXJzZXI8Y2hhciwgenZhcmlhbnQ6OlZhbHVlPCdzdGF0aWM+LCBFcnJv
ciA9IFNpbXBsZTxjaGFyPj4geworZm4gcGFyc2VyX3UzMjwnc3JjPigpIC0+IGltcGwgUGFyc2Vy
PCdzcmMsICYnc3JjIHN0ciwgenZhcmlhbnQ6OlZhbHVlPCdzdGF0aWM+LCBFeHRyYTwnc3JjPj4g
KyBDbG9uZQorewogICAgIHRleHQ6OmRpZ2l0cygxMCkKKyAgICAgICAgLnRvX3NsaWNlKCkKICAg
ICAgICAgLmxhYmVsbGVkKCJ1MzIiKQotICAgICAgICAubWFwKHxzOiBTdHJpbmd8IHp2YXJpYW50
OjpWYWx1ZTo6VTMyKHMucGFyc2UoKS51bndyYXAoKSkpCisgICAgICAgIC5tYXAofHM6ICZzdHJ8
IHp2YXJpYW50OjpWYWx1ZTo6VTMyKHMucGFyc2UoKS51bndyYXAoKSkpCiAgICAgICAgIC5wYWRk
ZWQoKQogfQotZm4gcGFyc2VyX2kzMigpIC0+IGltcGwgUGFyc2VyPGNoYXIsIHp2YXJpYW50OjpW
YWx1ZTwnc3RhdGljPiwgRXJyb3IgPSBTaW1wbGU8Y2hhcj4+IHsKK2ZuIHBhcnNlcl9pMzI8J3Ny
Yz4oKSAtPiBpbXBsIFBhcnNlcjwnc3JjLCAmJ3NyYyBzdHIsIHp2YXJpYW50OjpWYWx1ZTwnc3Rh
dGljPiwgRXh0cmE8J3NyYz4+ICsgQ2xvbmUKK3sKICAgICBqdXN0KCctJykKICAgICAgICAgLm9y
X25vdCgpCi0gICAgICAgIC5jaGFpbjo6PGNoYXIsIF8sIF8+KHRleHQ6OmRpZ2l0cygxMCkpCi0g
ICAgICAgIC5jb2xsZWN0Ojo8U3RyaW5nPigpCi0gICAgICAgIC5tYXAofHM6IFN0cmluZ3wgenZh
cmlhbnQ6OlZhbHVlOjpJMzIocy5wYXJzZSgpLnVud3JhcCgpKSkKKyAgICAgICAgLnRoZW4odGV4
dDo6ZGlnaXRzKDEwKSkKKyAgICAgICAgLnRvX3NsaWNlKCkKKyAgICAgICAgLm1hcCh8czogJnN0
cnwgenZhcmlhbnQ6OlZhbHVlOjpJMzIocy5wYXJzZSgpLnVud3JhcCgpKSkKICAgICAgICAgLnBh
ZGRlZCgpCiB9Ci1mbiBwYXJzZXJfdTY0KCkgLT4gaW1wbCBQYXJzZXI8Y2hhciwgenZhcmlhbnQ6
OlZhbHVlPCdzdGF0aWM+LCBFcnJvciA9IFNpbXBsZTxjaGFyPj4geworZm4gcGFyc2VyX3U2NDwn
c3JjPigpIC0+IGltcGwgUGFyc2VyPCdzcmMsICYnc3JjIHN0ciwgenZhcmlhbnQ6OlZhbHVlPCdz
dGF0aWM+LCBFeHRyYTwnc3JjPj4gKyBDbG9uZQorewogICAgIHRleHQ6OmRpZ2l0cygxMCkKKyAg
ICAgICAgLnRvX3NsaWNlKCkKICAgICAgICAgLmxhYmVsbGVkKCJ1NjQiKQotICAgICAgICAubWFw
KHxzOiBTdHJpbmd8IHp2YXJpYW50OjpWYWx1ZTo6VTY0KHMucGFyc2UoKS51bndyYXAoKSkpCisg
ICAgICAgIC5tYXAofHM6ICZzdHJ8IHp2YXJpYW50OjpWYWx1ZTo6VTY0KHMucGFyc2UoKS51bndy
YXAoKSkpCiAgICAgICAgIC5wYWRkZWQoKQogfQotZm4gcGFyc2VyX2k2NCgpIC0+IGltcGwgUGFy
c2VyPGNoYXIsIHp2YXJpYW50OjpWYWx1ZTwnc3RhdGljPiwgRXJyb3IgPSBTaW1wbGU8Y2hhcj4+
IHsKK2ZuIHBhcnNlcl9pNjQ8J3NyYz4oKSAtPiBpbXBsIFBhcnNlcjwnc3JjLCAmJ3NyYyBzdHIs
IHp2YXJpYW50OjpWYWx1ZTwnc3RhdGljPiwgRXh0cmE8J3NyYz4+ICsgQ2xvbmUKK3sKICAgICBq
dXN0KCctJykKICAgICAgICAgLm9yX25vdCgpCi0gICAgICAgIC5jaGFpbjo6PGNoYXIsIF8sIF8+
KHRleHQ6OmRpZ2l0cygxMCkpCi0gICAgICAgIC5jb2xsZWN0Ojo8U3RyaW5nPigpCisgICAgICAg
IC50aGVuKHRleHQ6OmRpZ2l0cygxMCkpCisgICAgICAgIC50b19zbGljZSgpCiAgICAgICAgIC5s
YWJlbGxlZCgiaTY0IikKLSAgICAgICAgLm1hcCh8czogU3RyaW5nfCB6dmFyaWFudDo6VmFsdWU6
Okk2NChzLnBhcnNlKCkudW53cmFwKCkpKQorICAgICAgICAubWFwKHxzOiAmc3RyfCB6dmFyaWFu
dDo6VmFsdWU6Okk2NChzLnBhcnNlKCkudW53cmFwKCkpKQogICAgICAgICAucGFkZGVkKCkKIH0K
LWZuIHBhcnNlcl9mNjQoKSAtPiBpbXBsIFBhcnNlcjxjaGFyLCB6dmFyaWFudDo6VmFsdWU8J3N0
YXRpYz4sIEVycm9yID0gU2ltcGxlPGNoYXI+PiB7CitmbiBwYXJzZXJfZjY0PCdzcmM+KCkgLT4g
aW1wbCBQYXJzZXI8J3NyYywgJidzcmMgc3RyLCB6dmFyaWFudDo6VmFsdWU8J3N0YXRpYz4sIEV4
dHJhPCdzcmM+PiArIENsb25lCit7CiAgICAganVzdCgnLScpCiAgICAgICAgIC5vcl9ub3QoKQot
ICAgICAgICAuY2hhaW46OjxjaGFyLCBfLCBfPih0ZXh0OjpkaWdpdHMoMTApKQotICAgICAgICAu
Y2hhaW46OjxjaGFyLCBfLCBfPihqdXN0KCcuJykuY2hhaW4odGV4dDo6ZGlnaXRzKDEwKSkub3Jf
bm90KCkuZmxhdHRlbigpKQotICAgICAgICAuY29sbGVjdDo6PFN0cmluZz4oKQorICAgICAgICAu
dGhlbih0ZXh0OjpkaWdpdHMoMTApKQorICAgICAgICAudGhlbihqdXN0KCcuJykudGhlbih0ZXh0
OjpkaWdpdHMoMTApKS5vcl9ub3QoKSkKKyAgICAgICAgLnRvX3NsaWNlKCkKICAgICAgICAgLmxh
YmVsbGVkKCJmNjQiKQotICAgICAgICAubWFwKHxzOiBTdHJpbmd8IHp2YXJpYW50OjpWYWx1ZTo6
RjY0KHMucGFyc2UoKS51bndyYXAoKSkpCisgICAgICAgIC5tYXAofHM6ICZzdHJ8IHp2YXJpYW50
OjpWYWx1ZTo6RjY0KHMucGFyc2UoKS51bndyYXAoKSkpCiAgICAgICAgIC5wYWRkZWQoKQogfQot
Zm4gcGFyc2VyX2Jvb2woKSAtPiBpbXBsIFBhcnNlcjxjaGFyLCB6dmFyaWFudDo6VmFsdWU8J3N0
YXRpYz4sIEVycm9yID0gU2ltcGxlPGNoYXI+PiB7CitmbiBwYXJzZXJfYm9vbDwnc3JjPigpIC0+
IGltcGwgUGFyc2VyPCdzcmMsICYnc3JjIHN0ciwgenZhcmlhbnQ6OlZhbHVlPCdzdGF0aWM+LCBF
eHRyYTwnc3JjPj4gKyBDbG9uZQorewogICAgIGp1c3QoInRydWUiKQogICAgICAgICAubWFwKHxf
fCB6dmFyaWFudDo6VmFsdWU6OkJvb2wodHJ1ZSkpCiAgICAgICAgIC5vcihqdXN0KCJmYWxzZSIp
Lm1hcCh8X3wgenZhcmlhbnQ6OlZhbHVlOjpCb29sKGZhbHNlKSkpCiAgICAgICAgIC5sYWJlbGxl
ZCgiYm9vbCIpCiAgICAgICAgIC5wYWRkZWQoKQogfQotZm4gcGFyc2VyX3N0cmluZygpIC0+IGlt
cGwgUGFyc2VyPGNoYXIsIHp2YXJpYW50OjpWYWx1ZTwnc3RhdGljPiwgRXJyb3IgPSBTaW1wbGU8
Y2hhcj4+IHsKLSAgICBsZXQgZXNjYXBlID0ganVzdCgnXFwnKS5pZ25vcmVfdGhlbigKLSAgICAg
ICAganVzdCgnXFwnKQotICAgICAgICAgICAgLm9yKGp1c3QoJy8nKSkKLSAgICAgICAgICAgIC5v
cihqdXN0KCciJykpCi0gICAgICAgICAgICAub3IoanVzdCgnYicpLnRvKCdceDA4JykpCi0gICAg
ICAgICAgICAub3IoanVzdCgnZicpLnRvKCdceDBDJykpCi0gICAgICAgICAgICAub3IoanVzdCgn
bicpLnRvKCdcbicpKQotICAgICAgICAgICAgLm9yKGp1c3QoJ3InKS50bygnXHInKSkKLSAgICAg
ICAgICAgIC5vcihqdXN0KCd0JykudG8oJ1x0JykpCi0gICAgICAgICAgICAub3IoanVzdCgndScp
Lmlnbm9yZV90aGVuKAotICAgICAgICAgICAgICAgIGZpbHRlcih8YzogJmNoYXJ8IGMuaXNfYXNj
aWlfaGV4ZGlnaXQoKSkKLSAgICAgICAgICAgICAgICAgICAgLnJlcGVhdGVkKCkKLSAgICAgICAg
ICAgICAgICAgICAgLmV4YWN0bHkoNCkKLSAgICAgICAgICAgICAgICAgICAgLmNvbGxlY3Q6OjxT
dHJpbmc+KCkKLSAgICAgICAgICAgICAgICAgICAgLnZhbGlkYXRlKHxkaWdpdHMsIHNwYW4sIGVt
aXR8IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXI6OmZyb21fdTMyKHUzMjo6ZnJvbV9z
dHJfcmFkaXgoJmRpZ2l0cywgMTYpLnVud3JhcCgpKS51bndyYXBfb3JfZWxzZSgKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8fCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVtaXQoU2ltcGxlOjpjdXN0b20oc3BhbiwgImludmFsaWQgdW5pY29kZSBjaGFyYWN0ZXIiKSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcdXtGRkZEfScgLy8gdW5pY29kZSBy
ZXBsYWNlbWVudCBjaGFyYWN0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAg
ICAgICkpLAotICAgICk7Ci0gICAgbGV0IHN0cmluZyA9IGp1c3QoJyInKQotICAgICAgICAuaWdu
b3JlX3RoZW4oZmlsdGVyKHxjfCAqYyAhPSAnXFwnICYmICpjICE9ICciJykub3IoZXNjYXBlKS5y
ZXBlYXRlZCgpKQorCisvLy8gVGhlIHF1b3RlZCBzdHJpbmcgbGl0ZXJhbCB0aGF0IGlzIHNoYXJl
ZCBieSB0aGUgc3RyaW5nLCBzaWduYXR1cmUgYW5kIG9iamVjdCBwYXRoIHBhcnNlcnMuCitmbiBx
dW90ZWRfc3RyaW5nPCdzcmM+KCkgLT4gaW1wbCBQYXJzZXI8J3NyYywgJidzcmMgc3RyLCBTdHJp
bmcsIEV4dHJhPCdzcmM+PiArIENsb25lIHsKKyAgICBsZXQgZXNjYXBlID0ganVzdCgnXFwnKS5p
Z25vcmVfdGhlbihjaG9pY2UoKAorICAgICAgICBqdXN0KCdcXCcpLAorICAgICAgICBqdXN0KCcv
JyksCisgICAgICAgIGp1c3QoJyInKSwKKyAgICAgICAganVzdCgnYicpLnRvKCdceDA4JyksCisg
ICAgICAgIGp1c3QoJ2YnKS50bygnXHgwQycpLAorICAgICAgICBqdXN0KCduJykudG8oJ1xuJyks
CisgICAgICAgIGp1c3QoJ3InKS50bygnXHInKSwKKyAgICAgICAganVzdCgndCcpLnRvKCdcdCcp
LAorICAgICAgICBqdXN0KCd1JykuaWdub3JlX3RoZW4oCisgICAgICAgICAgICBhbnkoKQorICAg
ICAgICAgICAgICAgIC5maWx0ZXIofGM6ICZjaGFyfCBjLmlzX2FzY2lpX2hleGRpZ2l0KCkpCisg
ICAgICAgICAgICAgICAgLnJlcGVhdGVkKCkKKyAgICAgICAgICAgICAgICAuZXhhY3RseSg0KQor
ICAgICAgICAgICAgICAgIC50b19zbGljZSgpCisgICAgICAgICAgICAgICAgLnZhbGlkYXRlKHxk
aWdpdHM6ICZzdHIsIGV4dHJhLCBlbWl0dGVyfCB7CisgICAgICAgICAgICAgICAgICAgIGNoYXI6
OmZyb21fdTMyKHUzMjo6ZnJvbV9zdHJfcmFkaXgoZGlnaXRzLCAxNikudW53cmFwKCkpLnVud3Jh
cF9vcl9lbHNlKHx8IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXR0ZXIuZW1pdChSaWNo
OjpjdXN0b20oZXh0cmEuc3BhbigpLCAiaW52YWxpZCB1bmljb2RlIGNoYXJhY3RlciIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICdcdXtGRkZEfScgLy8gdW5pY29kZSByZXBsYWNlbWVudCBj
aGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICB9KSwKKyAg
ICAgICAgKSwKKyAgICApKSk7CisgICAganVzdCgnIicpCisgICAgICAgIC5pZ25vcmVfdGhlbihu
b25lX29mKCJcXFwiIikub3IoZXNjYXBlKS5yZXBlYXRlZCgpLmNvbGxlY3Q6OjxTdHJpbmc+KCkp
CiAgICAgICAgIC50aGVuX2lnbm9yZShqdXN0KCciJykpCi0gICAgICAgIC5jb2xsZWN0Ojo8U3Ry
aW5nPigpCit9CisKK2ZuIHBhcnNlcl9zdHJpbmc8J3NyYz4oKQorLT4gaW1wbCBQYXJzZXI8J3Ny
YywgJidzcmMgc3RyLCB6dmFyaWFudDo6VmFsdWU8J3N0YXRpYz4sIEV4dHJhPCdzcmM+PiArIENs
b25lIHsKKyAgICBxdW90ZWRfc3RyaW5nKCkKICAgICAgICAgLm1hcCh8c3wgenZhcmlhbnQ6OlZh
bHVlOjpTdHIocy5pbnRvKCkpKQotICAgICAgICAubGFiZWxsZWQoInN0cmluZyIpOwotICAgIHN0
cmluZwotICAgICAgICAucmVjb3Zlcl93aXRoKHNraXBfdGhlbl9yZXRyeV91bnRpbChbJ30nLCAn
XSddKSkKKyAgICAgICAgLmxhYmVsbGVkKCJzdHJpbmciKQorICAgICAgICAucmVjb3Zlcl93aXRo
KHNraXBfdGhlbl9yZXRyeV91bnRpbChhbnkoKS5pZ25vcmVkKCksIG9uZV9vZigifV0iKS5pZ25v
cmVkKCkpKQogICAgICAgICAucGFkZGVkKCkKIH0KLWZuIHBhcnNlcl9zaWduYXR1cmUoKSAtPiBp
bXBsIFBhcnNlcjxjaGFyLCB6dmFyaWFudDo6VmFsdWU8J3N0YXRpYz4sIEVycm9yID0gU2ltcGxl
PGNoYXI+PiB7Ci0gICAgbGV0IGVzY2FwZSA9IGp1c3QoJ1xcJykuaWdub3JlX3RoZW4oCi0gICAg
ICAgIGp1c3QoJ1xcJykKLSAgICAgICAgICAgIC5vcihqdXN0KCcvJykpCi0gICAgICAgICAgICAu
b3IoanVzdCgnIicpKQotICAgICAgICAgICAgLm9yKGp1c3QoJ2InKS50bygnXHgwOCcpKQotICAg
ICAgICAgICAgLm9yKGp1c3QoJ2YnKS50bygnXHgwQycpKQotICAgICAgICAgICAgLm9yKGp1c3Qo
J24nKS50bygnXG4nKSkKLSAgICAgICAgICAgIC5vcihqdXN0KCdyJykudG8oJ1xyJykpCi0gICAg
ICAgICAgICAub3IoanVzdCgndCcpLnRvKCdcdCcpKQotICAgICAgICAgICAgLm9yKGp1c3QoJ3Un
KS5pZ25vcmVfdGhlbigKLSAgICAgICAgICAgICAgICBmaWx0ZXIofGM6ICZjaGFyfCBjLmlzX2Fz
Y2lpX2hleGRpZ2l0KCkpCi0gICAgICAgICAgICAgICAgICAgIC5yZXBlYXRlZCgpCi0gICAgICAg
ICAgICAgICAgICAgIC5leGFjdGx5KDQpCi0gICAgICAgICAgICAgICAgICAgIC5jb2xsZWN0Ojo8
U3RyaW5nPigpCi0gICAgICAgICAgICAgICAgICAgIC52YWxpZGF0ZSh8ZGlnaXRzLCBzcGFuLCBl
bWl0fCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyOjpmcm9tX3UzMih1MzI6OmZyb21f
c3RyX3JhZGl4KCZkaWdpdHMsIDE2KS51bndyYXAoKSkudW53cmFwX29yX2Vsc2UoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfHwgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbWl0KFNpbXBsZTo6Y3VzdG9tKHNwYW4sICJpbnZhbGlkIHVuaWNvZGUgY2hhcmFjdGVyIikp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHV7RkZGRH0nIC8vIHVuaWNvZGUg
cmVwbGFjZW1lbnQgY2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgfSksCi0gICAgICAg
ICAgICApKSwKLSAgICApOwotICAgIGxldCBzdHJpbmcgPSBqdXN0KCciJykKLSAgICAgICAgLmln
bm9yZV90aGVuKGZpbHRlcih8Y3wgKmMgIT0gJ1xcJyAmJiAqYyAhPSAnIicpLm9yKGVzY2FwZSku
cmVwZWF0ZWQoKSkKLSAgICAgICAgLnRoZW5faWdub3JlKGp1c3QoJyInKSkKLSAgICAgICAgLmNv
bGxlY3Q6OjxTdHJpbmc+KCkKLSAgICAgICAgLnRyeV9tYXAofGRpZ2l0cywgc3BhbnwgeworZm4g
cGFyc2VyX3NpZ25hdHVyZTwnc3JjPigpCistPiBpbXBsIFBhcnNlcjwnc3JjLCAmJ3NyYyBzdHIs
IHp2YXJpYW50OjpWYWx1ZTwnc3RhdGljPiwgRXh0cmE8J3NyYz4+ICsgQ2xvbmUgeworICAgIHF1
b3RlZF9zdHJpbmcoKQorICAgICAgICAudHJ5X21hcCh8ZGlnaXRzOiBTdHJpbmcsIHNwYW58IHsK
ICAgICAgICAgICAgIGlmIGxldCBPayhzaWduYXR1cmUpID0gU2lnbmF0dXJlOjpmcm9tX3N0cihk
aWdpdHMuYXNfc3RyKCkpIHsKICAgICAgICAgICAgICAgICBPayh6dmFyaWFudDo6VmFsdWU6OlNp
Z25hdHVyZShzaWduYXR1cmUpKQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBFcnIoU2ltcGxlOjpjdXN0b20oCisgICAgICAgICAgICAgICAgRXJyKFJpY2g6OmN1c3RvbSgK
ICAgICAgICAgICAgICAgICAgICAgc3BhbiwKICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5v
dCBwYXJzZSBzaWduYXR1cmUgZnJvbSBzdHJpbmcgdmFsdWUiLAogICAgICAgICAgICAgICAgICkp
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pCi0gICAgICAgIC5sYWJlbGxlZCgic2lnbmF0dXJl
Iik7Ci0KLSAgICBzdHJpbmcKLSAgICAgICAgLnJlY292ZXJfd2l0aChza2lwX3RoZW5fcmV0cnlf
dW50aWwoWyd9JywgJ10nXSkpCisgICAgICAgIC5sYWJlbGxlZCgic2lnbmF0dXJlIikKKyAgICAg
ICAgLnJlY292ZXJfd2l0aChza2lwX3RoZW5fcmV0cnlfdW50aWwoYW55KCkuaWdub3JlZCgpLCBv
bmVfb2YoIn1dIikuaWdub3JlZCgpKSkKICAgICAgICAgLnBhZGRlZCgpCiB9Ci1mbiBwYXJzZXJf
b2JqZWN0X3BhdGgoKSAtPiBpbXBsIFBhcnNlcjxjaGFyLCB6dmFyaWFudDo6VmFsdWU8J3N0YXRp
Yz4sIEVycm9yID0gU2ltcGxlPGNoYXI+PiB7Ci0gICAgbGV0IGVzY2FwZSA9IGp1c3QoJ1xcJyku
aWdub3JlX3RoZW4oCi0gICAgICAgIGp1c3QoJ1xcJykKLSAgICAgICAgICAgIC5vcihqdXN0KCcv
JykpCi0gICAgICAgICAgICAub3IoanVzdCgnIicpKQotICAgICAgICAgICAgLm9yKGp1c3QoJ2In
KS50bygnXHgwOCcpKQotICAgICAgICAgICAgLm9yKGp1c3QoJ2YnKS50bygnXHgwQycpKQotICAg
ICAgICAgICAgLm9yKGp1c3QoJ24nKS50bygnXG4nKSkKLSAgICAgICAgICAgIC5vcihqdXN0KCdy
JykudG8oJ1xyJykpCi0gICAgICAgICAgICAub3IoanVzdCgndCcpLnRvKCdcdCcpKQotICAgICAg
ICAgICAgLm9yKGp1c3QoJ3UnKS5pZ25vcmVfdGhlbigKLSAgICAgICAgICAgICAgICBmaWx0ZXIo
fGM6ICZjaGFyfCBjLmlzX2FzY2lpX2hleGRpZ2l0KCkpCi0gICAgICAgICAgICAgICAgICAgIC5y
ZXBlYXRlZCgpCi0gICAgICAgICAgICAgICAgICAgIC5leGFjdGx5KDQpCi0gICAgICAgICAgICAg
ICAgICAgIC5jb2xsZWN0Ojo8U3RyaW5nPigpCi0gICAgICAgICAgICAgICAgICAgIC52YWxpZGF0
ZSh8ZGlnaXRzLCBzcGFuLCBlbWl0fCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyOjpm
cm9tX3UzMih1MzI6OmZyb21fc3RyX3JhZGl4KCZkaWdpdHMsIDE2KS51bndyYXAoKSkudW53cmFw
X29yX2Vsc2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbWl0KFNpbXBsZTo6Y3VzdG9tKHNwYW4sICJpbnZhbGlkIHVu
aWNvZGUgY2hhcmFjdGVyIikpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHV7
RkZGRH0nIC8vIHVuaWNvZGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAg
ICAgICAgfSksCi0gICAgICAgICAgICApKSwKLSAgICApOwotICAgIGxldCBzdHJpbmcgPSBqdXN0
KCciJykKLSAgICAgICAgLmlnbm9yZV90aGVuKGZpbHRlcih8Y3wgKmMgIT0gJ1xcJyAmJiAqYyAh
PSAnIicpLm9yKGVzY2FwZSkucmVwZWF0ZWQoKSkKLSAgICAgICAgLnRoZW5faWdub3JlKGp1c3Qo
JyInKSkKLSAgICAgICAgLmNvbGxlY3Q6OjxTdHJpbmc+KCkKLSAgICAgICAgLnRyeV9tYXAofGRp
Z2l0cywgc3BhbnwgeworZm4gcGFyc2VyX29iamVjdF9wYXRoPCdzcmM+KCkKKy0+IGltcGwgUGFy
c2VyPCdzcmMsICYnc3JjIHN0ciwgenZhcmlhbnQ6OlZhbHVlPCdzdGF0aWM+LCBFeHRyYTwnc3Jj
Pj4gKyBDbG9uZSB7CisgICAgcXVvdGVkX3N0cmluZygpCisgICAgICAgIC50cnlfbWFwKHxkaWdp
dHM6IFN0cmluZywgc3BhbnwgewogICAgICAgICAgICAgaWYgbGV0IE9rKHBhdGgpID0gT2JqZWN0
UGF0aDo6dHJ5X2Zyb20oZGlnaXRzKSB7CiAgICAgICAgICAgICAgICAgT2soenZhcmlhbnQ6OlZh
bHVlOjpPYmplY3RQYXRoKHBhdGgpKQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBFcnIoU2ltcGxlOjpjdXN0b20oCisgICAgICAgICAgICAgICAgRXJyKFJpY2g6OmN1c3Rv
bSgKICAgICAgICAgICAgICAgICAgICAgc3BhbiwKICAgICAgICAgICAgICAgICAgICAgIkNvdWxk
IG5vdCBwYXJzZSBvYmplY3QgcGF0aCBmcm9tIHN0cmluZyB2YWx1ZSIsCiAgICAgICAgICAgICAg
ICAgKSkKICAgICAgICAgICAgIH0KICAgICAgICAgfSkKLSAgICAgICAgLmxhYmVsbGVkKCJvYmpl
Y3RfcGF0aCIpOwotCi0gICAgc3RyaW5nCi0gICAgICAgIC5yZWNvdmVyX3dpdGgoc2tpcF90aGVu
X3JldHJ5X3VudGlsKFsnfScsICddJ10pKQorICAgICAgICAubGFiZWxsZWQoIm9iamVjdF9wYXRo
IikKKyAgICAgICAgLnJlY292ZXJfd2l0aChza2lwX3RoZW5fcmV0cnlfdW50aWwoYW55KCkuaWdu
b3JlZCgpLCBvbmVfb2YoIn1dIikuaWdub3JlZCgpKSkKICAgICAgICAgLnBhZGRlZCgpCiB9CiAK
LWZuIHBhcnNlcl9mZCgpIC0+IGltcGwgUGFyc2VyPGNoYXIsIHp2YXJpYW50OjpWYWx1ZTwnc3Rh
dGljPiwgRXJyb3IgPSBTaW1wbGU8Y2hhcj4+IHsKLSAgICBlbXB0eSgpLnRyeV9tYXAofCgpLCBz
cGFufCBFcnIoU2ltcGxlOjpjdXN0b20oc3BhbiwgIkNhbm5vdCBwYXJzZSBmaWxlIGRlc2NyaXB0
b3JzIikpKQorZm4gcGFyc2VyX2ZkPCdzcmM+KCkgLT4gaW1wbCBQYXJzZXI8J3NyYywgJidzcmMg
c3RyLCB6dmFyaWFudDo6VmFsdWU8J3N0YXRpYz4sIEV4dHJhPCdzcmM+PiArIENsb25lIHsKKyAg
ICBlbXB0eSgpLnRyeV9tYXAofCgpLCBzcGFufCBFcnIoUmljaDo6Y3VzdG9tKHNwYW4sICJDYW5u
b3QgcGFyc2UgZmlsZSBkZXNjcmlwdG9ycyIpKSkKIH0KIAogI1tjZmcodGVzdCldCkBAIC0zMzks
NyArMzA1LDcgQEAgZm4gdGVzdF9nZW5lcmljX3NpZ25hdHVyZShzcmM6ICYnc3RhdGljIHN0ciwg
c2lnbmF0dXJlOiAmJ3N0YXRpYyBzdHIsIHZhbHVlOiB6dmEKIAogICAgIGxldCBzaWduYXR1cmUg
PSBTaWduYXR1cmU6OmZyb21fc3RyKHNpZ25hdHVyZSkudW53cmFwKCk7CiAgICAgcHJpbnRsbiEo
Int9Iiwgc2lnbmF0dXJlKTsKLSAgICBsZXQgcmVzdWx0ID0gZ2V0X3BhcnNlcihzaWduYXR1cmUp
LnBhcnNlKHNyYy50cmltKCkpOworICAgIGxldCByZXN1bHQgPSBnZXRfcGFyc2VyKHNpZ25hdHVy
ZSkucGFyc2Uoc3JjLnRyaW0oKSkuaW50b19yZXN1bHQoKTsKICAgICBkYmchKCZyZXN1bHQpOwog
ICAgIGRiZyEoJnZhbHVlKTsKICAgICBhc3NlcnRfZXEhKHJlc3VsdCwgT2sodmFsdWUpKTsKQEAg
LTM4Niw3ICszNTIsNyBAQCBmbiB0ZXN0X3NpZ25hdHVyZSgpIHsKICAgICApOwogICAgIHVzZSBz
dGQ6OnN0cjo6RnJvbVN0cjsKICAgICBsZXQgc2lnbmF0dXJlID0gU2lnbmF0dXJlOjpmcm9tX3N0
cigiZyIpLnVud3JhcCgpOwotICAgIGxldCByZXN1bHQgPSBnZXRfcGFyc2VyKHNpZ25hdHVyZSku
cGFyc2UoImsiKTsgLy8gayBpcyBub3QgYSB2YWxpZCBzaWduYXR1cmUKKyAgICBsZXQgcmVzdWx0
ID0gZ2V0X3BhcnNlcihzaWduYXR1cmUpLnBhcnNlKCJrIikuaW50b19yZXN1bHQoKTsgLy8gayBp
cyBub3QgYSB2YWxpZCBzaWduYXR1cmUKICAgICBhc3NlcnQhKHJlc3VsdC5pc19lcnIoKSk7CiB9
CiAKQEAgLTQxMCwxMCArMzc2LDEwIEBAIGZuIHRlc3Rfb2JqZWN0X3BhdGgoKSB7CiAgICAgdXNl
IHN0ZDo6c3RyOjpGcm9tU3RyOwogCiAgICAgbGV0IHNpZ25hdHVyZSA9IFNpZ25hdHVyZTo6ZnJv
bV9zdHIoIm8iKS51bndyYXAoKTsKLSAgICBsZXQgcmVzdWx0ID0gZ2V0X3BhcnNlcihzaWduYXR1
cmUpLnBhcnNlKCJrIik7IC8vIGsgaXMgbm90IGEgdmFsaWQgb2JqZWN0IHBhdGgKKyAgICBsZXQg
cmVzdWx0ID0gZ2V0X3BhcnNlcihzaWduYXR1cmUpLnBhcnNlKCJrIikuaW50b19yZXN1bHQoKTsg
Ly8gayBpcyBub3QgYSB2YWxpZCBvYmplY3QgcGF0aAogICAgIGFzc2VydCEocmVzdWx0LmlzX2Vy
cigpKTsKICAgICBsZXQgc2lnbmF0dXJlID0gU2lnbmF0dXJlOjpmcm9tX3N0cigibyIpLnVud3Jh
cCgpOwotICAgIGxldCByZXN1bHQgPSBnZXRfcGFyc2VyKHNpZ25hdHVyZSkucGFyc2UoIi8vIik7
IC8vIC8vIGlzIG5vdCBhIHZhbGlkIG9iamVjdCBwYXRoCisgICAgbGV0IHJlc3VsdCA9IGdldF9w
YXJzZXIoc2lnbmF0dXJlKS5wYXJzZSgiLy8iKS5pbnRvX3Jlc3VsdCgpOyAvLyAvLyBpcyBub3Qg
YSB2YWxpZCBvYmplY3QgcGF0aAogICAgIGFzc2VydCEocmVzdWx0LmlzX2VycigpKTsKIH0KIAot
LSAKMi41NS4wCgo=


--=-AqHGswZCE8QwUbiwmAAr--