PGh0bWw+DQo8VGl0bGU+TWFtbW9ncmFtIGFuZCBCcmVhc3QgVWx0cmFzb3VuZDwvdGl0bGU+DQo8
aGVhZD4NCg0KDQo8IS0tIENTUyBTY3JpcHQgdGhhdCByZW1vdmVzIHRleHRhcmVhIGFuZCB0ZXh0
Ym94IGJvcmRlcnMgd2hlbiBwcmludGluZy0tPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRp
YT0icHJpbnQiPg0KLkRvTm90UHJpbnQgew0KCWRpc3BsYXk6IG5vbmU7DQp9DQoNCmlucHV0Lm5v
Ym9yZGVyIHsNCglib3JkZXI6IDBweDsNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCn0NCnRl
eHRhcmVhLm5vYm9yZGVyIHsNCglzY3JvbGxiYXItM2RsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7
DQoJc2Nyb2xsYmFyLWFycm93LWNvbG9yOiB0cmFuc3BhcmVudDsNCglzY3JvbGxiYXItYmFzZS1j
b2xvcjogdHJhbnNwYXJlbnQ7DQoJc2Nyb2xsYmFyLWRhcmtzaGFkb3ctY29sb3I6IHRyYW5zcGFy
ZW50Ow0KCXNjcm9sbGJhci1mYWNlLWNvbG9yOiB0cmFuc3BhcmVudDsNCglzY3JvbGxiYXItaGln
aGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsNCglzY3JvbGxiYXItc2hhZG93LWNvbG9yOiB0cmFu
c3BhcmVudDsNCglzY3JvbGxiYXJ0LXJhY2stY29sb3I6IHRyYW5zcGFyZW50Ow0KCWJhY2tncm91
bmQ6IHRyYW5zcGFyZW50Ow0KCW92ZXJmbG93OiBoaWRkZW47DQoJLy9zY3JvbGxiYXIgOiBub25l
Ow0KCWJvcmRlcjogMHB4Ow0KfQ0KPC9zdHlsZT4NCg0KDQo8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+DQovKiBUaGlzIG5vdGljZSBtdXN0IGJlIHVudG91Y2hlZCBhdCBhbGwgdGltZXMu
DQoNCnd6X2pzZ3JhcGhpY3MuanMgICAgdi4gMy4wMQ0KVGhlIGxhdGVzdCB2ZXJzaW9uIGlzIGF2
YWlsYWJsZSBhdA0KaHR0cDovL3d3dy53YWx0ZXJ6b3JuLmNvbQ0Kb3IgaHR0cDovL3d3dy5kZXZp
cmEuY29tDQpvciBodHRwOi8vd3d3LndhbHRlcnpvcm4uZGUNCg0KQ29weXJpZ2h0IChjKSAyMDAy
LTIwMDQgV2FsdGVyIFpvcm4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpDcmVhdGVkIDMuIDExLiAy
MDAyIGJ5IFdhbHRlciBab3JuIChXZWI6IGh0dHA6Ly93d3cud2FsdGVyem9ybi5jb20gKQ0KTGFz
dCBtb2RpZmllZDogMS4gNi4gMjAwNw0KDQpQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zIGZvciBJ
bnRlcm5ldCBFeHBsb3Jlcg0KYnkgVGhvbWFzIEZyYW5rIGFuZCBKb2huIEhvbGRzd29ydGguDQpm
aWxsUG9seWdvbiBtZXRob2QgaW1wbGVtZW50ZWQgYnkgTWF0dGhpZXUgSGFsbGVyLg0KDQpIaWdo
IFBlcmZvcm1hbmNlIEphdmFTY3JpcHQgR3JhcGhpY3MgTGlicmFyeS4NClByb3ZpZGVzIG1ldGhv
ZHMNCi0gdG8gZHJhdyBsaW5lcywgcmVjdGFuZ2xlcywgZWxsaXBzZXMsIHBvbHlnb25zDQoJd2l0
aCBzcGVjaWZpYWJsZSBsaW5lIHRoaWNrbmVzcywNCi0gdG8gZmlsbCByZWN0YW5nbGVzLCBwb2x5
Z29ucywgZWxsaXBzZXMgYW5kIGFyY3MNCi0gdG8gZHJhdyB0ZXh0Lg0KTk9URTogT3BlcmF0aW9u
cywgZnVuY3Rpb25zIGFuZCBicmFuY2hpbmcgaGF2ZSByYXRoZXIgYmVlbiBvcHRpbWl6ZWQNCnRv
IGVmZmljaWVuY3kgYW5kIHNwZWVkIHRoYW4gdG8gc2hvcnRuZXNzIG9mIHNvdXJjZSBjb2RlLg0K
DQpMSUNFTlNFOiBMR1BMDQoNClRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCm1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCkxpY2Vuc2UgKExHUEwpIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCnZlcnNpb24gMi4xIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KDQpUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwNCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mDQpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQ0KTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4NCg0KWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYw0KTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KRm91bmRhdGlvbiwgSW5jLiwgNTkg
VGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSwNCm9y
IHNlZSBodHRwOi8vd3d3LmdudS5vcmcvY29weWxlZnQvbGVzc2VyLmh0bWwNCiovDQoNCg0KdmFy
IGpnX29rLCBqZ19pZSwgamdfZmFzdCwgamdfZG9tLCBqZ19tb3o7DQoNCg0KZnVuY3Rpb24gX2No
a0RIVE0oeCwgaSkNCnsNCgl4ID0gZG9jdW1lbnQuYm9keSB8fCBudWxsOw0KCWpnX2llID0geCAm
JiB0eXBlb2YgeC5pbnNlcnRBZGphY2VudEhUTUwgIT0gInVuZGVmaW5lZCIgJiYgZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudDsNCglqZ19kb20gPSAoeCAmJiAhamdfaWUgJiYNCgkJdHlwZW9mIHguYXBw
ZW5kQ2hpbGQgIT0gInVuZGVmaW5lZCIgJiYNCgkJdHlwZW9mIGRvY3VtZW50LmNyZWF0ZVJhbmdl
ICE9ICJ1bmRlZmluZWQiICYmDQoJCXR5cGVvZiAoaSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCkp
LnNldFN0YXJ0QmVmb3JlICE9ICJ1bmRlZmluZWQiICYmDQoJCXR5cGVvZiBpLmNyZWF0ZUNvbnRl
eHR1YWxGcmFnbWVudCAhPSAidW5kZWZpbmVkIik7DQoJamdfZmFzdCA9IGpnX2llICYmIGRvY3Vt
ZW50LmFsbCAmJiAhd2luZG93Lm9wZXJhOw0KCWpnX21veiA9IGpnX2RvbSAmJiB0eXBlb2YgeC5z
dHlsZS5Nb3pPcGFjaXR5ICE9ICJ1bmRlZmluZWQiOw0KCWpnX29rID0gISEoamdfaWUgfHwgamdf
ZG9tKTsNCn0NCg0KZnVuY3Rpb24gX3BudENudkRvbSgpDQp7DQoJdmFyIHggPSB0aGlzLnduZC5k
b2N1bWVudC5jcmVhdGVSYW5nZSgpOw0KCXguc2V0U3RhcnRCZWZvcmUodGhpcy5jbnYpOw0KCXgg
PSB4LmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChqZ19mYXN0PyB0aGlzLl9odG1ScGMoKSA6IHRo
aXMuaHRtKTsNCglpZih0aGlzLmNudikgdGhpcy5jbnYuYXBwZW5kQ2hpbGQoeCk7DQoJdGhpcy5o
dG0gPSAiIjsNCn0NCg0KZnVuY3Rpb24gX3BudENudkllKCkNCnsNCglpZih0aGlzLmNudikgdGhp
cy5jbnYuaW5zZXJ0QWRqYWNlbnRIVE1MKCJCZWZvcmVFbmQiLCBqZ19mYXN0PyB0aGlzLl9odG1S
cGMoKSA6IHRoaXMuaHRtKTsNCgl0aGlzLmh0bSA9ICIiOw0KfQ0KDQpmdW5jdGlvbiBfcG50RG9j
KCkNCnsNCgl0aGlzLnduZC5kb2N1bWVudC53cml0ZShqZ19mYXN0PyB0aGlzLl9odG1ScGMoKSA6
IHRoaXMuaHRtKTsNCgl0aGlzLmh0bSA9ICcnOw0KfQ0KDQpmdW5jdGlvbiBfcG50TigpDQp7DQoJ
Ow0KfQ0KDQpmdW5jdGlvbiBfbWtEaXYoeCwgeSwgdywgaCkNCnsNCgl0aGlzLmh0bSArPSAnPGRp
diBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7JysNCgkJJ2xlZnQ6JyArIHggKyAncHg7JysNCgkJ
J3RvcDonICsgeSArICdweDsnKw0KCQknd2lkdGg6JyArIHcgKyAncHg7JysNCgkJJ2hlaWdodDon
ICsgaCArICdweDsnKw0KCQknY2xpcDpyZWN0KDAsJyt3KydweCwnK2grJ3B4LDApOycrDQoJCSdi
YWNrZ3JvdW5kLWNvbG9yOicgKyB0aGlzLmNvbG9yICsNCgkJKCFqZ19tb3o/ICc7b3ZlcmZsb3c6
aGlkZGVuJyA6ICcnKSsNCgkJJzsiPjxcL2Rpdj4nOw0KfQ0KDQpmdW5jdGlvbiBfbWtEaXZJZSh4
LCB5LCB3LCBoKQ0Kew0KCXRoaXMuaHRtICs9ICclJScrdGhpcy5jb2xvcisnOycreCsnOycreSsn
OycrdysnOycraCsnOyc7DQp9DQoNCmZ1bmN0aW9uIF9ta0RpdlBydCh4LCB5LCB3LCBoKQ0Kew0K
CXRoaXMuaHRtICs9ICc8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsnKw0KCQknYm9yZGVy
LWxlZnQ6JyArIHcgKyAncHggc29saWQgJyArIHRoaXMuY29sb3IgKyAnOycrDQoJCSdsZWZ0Oicg
KyB4ICsgJ3B4OycrDQoJCSd0b3A6JyArIHkgKyAncHg7JysNCgkJJ3dpZHRoOjBweDsnKw0KCQkn
aGVpZ2h0OicgKyBoICsgJ3B4OycrDQoJCSdjbGlwOnJlY3QoMCwnK3crJ3B4LCcraCsncHgsMCk7
JysNCgkJJ2JhY2tncm91bmQtY29sb3I6JyArIHRoaXMuY29sb3IgKw0KCQkoIWpnX21vej8gJztv
dmVyZmxvdzpoaWRkZW4nIDogJycpKw0KCQknOyI+PFwvZGl2Pic7DQp9DQoNCnZhciBfcmVnZXgg
PSAgLyUlKFteO10rKTsoW147XSspOyhbXjtdKyk7KFteO10rKTsoW147XSspOy9nOw0KZnVuY3Rp
b24gX2h0bVJwYygpDQp7DQoJcmV0dXJuIHRoaXMuaHRtLnJlcGxhY2UoDQoJCV9yZWdleCwNCgkJ
JzxkaXYgc3R5bGU9Im92ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5k
LWNvbG9yOicrDQoJCSckMTtsZWZ0OiQyO3RvcDokMzt3aWR0aDokNDtoZWlnaHQ6JDUiPjwvZGl2
PicpOw0KfQ0KDQpmdW5jdGlvbiBfaHRtUHJ0UnBjKCkNCnsNCglyZXR1cm4gdGhpcy5odG0ucmVw
bGFjZSgNCgkJX3JlZ2V4LA0KCQknPGRpdiBzdHlsZT0ib3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9u
OmFic29sdXRlO2JhY2tncm91bmQtY29sb3I6JysNCgkJJyQxO2xlZnQ6JDI7dG9wOiQzO3dpZHRo
OiQ0O2hlaWdodDokNTtib3JkZXItbGVmdDokNHB4IHNvbGlkICQxIj48L2Rpdj4nKTsNCn0NCg0K
ZnVuY3Rpb24gX21rTGluKHgxLCB5MSwgeDIsIHkyKQ0Kew0KCWlmKHgxID4geDIpDQoJew0KCQl2
YXIgX3gyID0geDI7DQoJCXZhciBfeTIgPSB5MjsNCgkJeDIgPSB4MTsNCgkJeTIgPSB5MTsNCgkJ
eDEgPSBfeDI7DQoJCXkxID0gX3kyOw0KCX0NCgl2YXIgZHggPSB4Mi14MSwgZHkgPSBNYXRoLmFi
cyh5Mi15MSksDQoJeCA9IHgxLCB5ID0geTEsDQoJeUluY3IgPSAoeTEgPiB5Mik/IC0xIDogMTsN
Cg0KCWlmKGR4ID49IGR5KQ0KCXsNCgkJdmFyIHByID0gZHk8PDEsDQoJCXBydSA9IHByIC0gKGR4
PDwxKSwNCgkJcCA9IHByLWR4LA0KCQlveCA9IHg7DQoJCXdoaWxlKGR4ID4gMCkNCgkJey0tZHg7
DQoJCQkrK3g7DQoJCQlpZihwID4gMCkNCgkJCXsNCgkJCQl0aGlzLl9ta0RpdihveCwgeSwgeC1v
eCwgMSk7DQoJCQkJeSArPSB5SW5jcjsNCgkJCQlwICs9IHBydTsNCgkJCQlveCA9IHg7DQoJCQl9
DQoJCQllbHNlIHAgKz0gcHI7DQoJCX0NCgkJdGhpcy5fbWtEaXYob3gsIHksIHgyLW94KzEsIDEp
Ow0KCX0NCg0KCWVsc2UNCgl7DQoJCXZhciBwciA9IGR4PDwxLA0KCQlwcnUgPSBwciAtIChkeTw8
MSksDQoJCXAgPSBwci1keSwNCgkJb3kgPSB5Ow0KCQlpZih5MiA8PSB5MSkNCgkJew0KCQkJd2hp
bGUoZHkgPiAwKQ0KCQkJey0tZHk7DQoJCQkJaWYocCA+IDApDQoJCQkJew0KCQkJCQl0aGlzLl9t
a0Rpdih4KyssIHksIDEsIG95LXkrMSk7DQoJCQkJCXkgKz0geUluY3I7DQoJCQkJCXAgKz0gcHJ1
Ow0KCQkJCQlveSA9IHk7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCXkgKz0geUluY3I7
DQoJCQkJCXAgKz0gcHI7DQoJCQkJfQ0KCQkJfQ0KCQkJdGhpcy5fbWtEaXYoeDIsIHkyLCAxLCBv
eS15MisxKTsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCXdoaWxlKGR5ID4gMCkNCgkJCXstLWR5Ow0K
CQkJCXkgKz0geUluY3I7DQoJCQkJaWYocCA+IDApDQoJCQkJew0KCQkJCQl0aGlzLl9ta0Rpdih4
KyssIG95LCAxLCB5LW95KTsNCgkJCQkJcCArPSBwcnU7DQoJCQkJCW95ID0geTsNCgkJCQl9DQoJ
CQkJZWxzZSBwICs9IHByOw0KCQkJfQ0KCQkJdGhpcy5fbWtEaXYoeDIsIG95LCAxLCB5Mi1veSsx
KTsNCgkJfQ0KCX0NCn0NCg0KZnVuY3Rpb24gX21rTGluMkQoeDEsIHkxLCB4MiwgeTIpDQp7DQoJ
aWYoeDEgPiB4MikNCgl7DQoJCXZhciBfeDIgPSB4MjsNCgkJdmFyIF95MiA9IHkyOw0KCQl4MiA9
IHgxOw0KCQl5MiA9IHkxOw0KCQl4MSA9IF94MjsNCgkJeTEgPSBfeTI7DQoJfQ0KCXZhciBkeCA9
IHgyLXgxLCBkeSA9IE1hdGguYWJzKHkyLXkxKSwNCgl4ID0geDEsIHkgPSB5MSwNCgl5SW5jciA9
ICh5MSA+IHkyKT8gLTEgOiAxOw0KDQoJdmFyIHMgPSB0aGlzLnN0cm9rZTsNCglpZihkeCA+PSBk
eSkNCgl7DQoJCWlmKGR4ID4gMCAmJiBzLTMgPiAwKQ0KCQl7DQoJCQl2YXIgX3MgPSAocypkeCpN
YXRoLnNxcnQoMStkeSpkeS8oZHgqZHgpKS1keC0ocz4+MSkqZHkpIC8gZHg7DQoJCQlfcyA9ICgh
KHMtNCk/IE1hdGguY2VpbChfcykgOiBNYXRoLnJvdW5kKF9zKSkgKyAxOw0KCQl9DQoJCWVsc2Ug
dmFyIF9zID0gczsNCgkJdmFyIGFkID0gTWF0aC5jZWlsKHMvMik7DQoNCgkJdmFyIHByID0gZHk8
PDEsDQoJCXBydSA9IHByIC0gKGR4PDwxKSwNCgkJcCA9IHByLWR4LA0KCQlveCA9IHg7DQoJCXdo
aWxlKGR4ID4gMCkNCgkJey0tZHg7DQoJCQkrK3g7DQoJCQlpZihwID4gMCkNCgkJCXsNCgkJCQl0
aGlzLl9ta0RpdihveCwgeSwgeC1veCthZCwgX3MpOw0KCQkJCXkgKz0geUluY3I7DQoJCQkJcCAr
PSBwcnU7DQoJCQkJb3ggPSB4Ow0KCQkJfQ0KCQkJZWxzZSBwICs9IHByOw0KCQl9DQoJCXRoaXMu
X21rRGl2KG94LCB5LCB4Mi1veCthZCsxLCBfcyk7DQoJfQ0KDQoJZWxzZQ0KCXsNCgkJaWYocy0z
ID4gMCkNCgkJew0KCQkJdmFyIF9zID0gKHMqZHkqTWF0aC5zcXJ0KDErZHgqZHgvKGR5KmR5KSkt
KHM+PjEpKmR4LWR5KSAvIGR5Ow0KCQkJX3MgPSAoIShzLTQpPyBNYXRoLmNlaWwoX3MpIDogTWF0
aC5yb3VuZChfcykpICsgMTsNCgkJfQ0KCQllbHNlIHZhciBfcyA9IHM7DQoJCXZhciBhZCA9IE1h
dGgucm91bmQocy8yKTsNCg0KCQl2YXIgcHIgPSBkeDw8MSwNCgkJcHJ1ID0gcHIgLSAoZHk8PDEp
LA0KCQlwID0gcHItZHksDQoJCW95ID0geTsNCgkJaWYoeTIgPD0geTEpDQoJCXsNCgkJCSsrYWQ7
DQoJCQl3aGlsZShkeSA+IDApDQoJCQl7LS1keTsNCgkJCQlpZihwID4gMCkNCgkJCQl7DQoJCQkJ
CXRoaXMuX21rRGl2KHgrKywgeSwgX3MsIG95LXkrYWQpOw0KCQkJCQl5ICs9IHlJbmNyOw0KCQkJ
CQlwICs9IHBydTsNCgkJCQkJb3kgPSB5Ow0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQl5
ICs9IHlJbmNyOw0KCQkJCQlwICs9IHByOw0KCQkJCX0NCgkJCX0NCgkJCXRoaXMuX21rRGl2KHgy
LCB5MiwgX3MsIG95LXkyK2FkKTsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCXdoaWxlKGR5ID4gMCkN
CgkJCXstLWR5Ow0KCQkJCXkgKz0geUluY3I7DQoJCQkJaWYocCA+IDApDQoJCQkJew0KCQkJCQl0
aGlzLl9ta0Rpdih4KyssIG95LCBfcywgeS1veSthZCk7DQoJCQkJCXAgKz0gcHJ1Ow0KCQkJCQlv
eSA9IHk7DQoJCQkJfQ0KCQkJCWVsc2UgcCArPSBwcjsNCgkJCX0NCgkJCXRoaXMuX21rRGl2KHgy
LCBveSwgX3MsIHkyLW95K2FkKzEpOw0KCQl9DQoJfQ0KfQ0KDQpmdW5jdGlvbiBfbWtMaW5Eb3R0
KHgxLCB5MSwgeDIsIHkyKQ0Kew0KCWlmKHgxID4geDIpDQoJew0KCQl2YXIgX3gyID0geDI7DQoJ
CXZhciBfeTIgPSB5MjsNCgkJeDIgPSB4MTsNCgkJeTIgPSB5MTsNCgkJeDEgPSBfeDI7DQoJCXkx
ID0gX3kyOw0KCX0NCgl2YXIgZHggPSB4Mi14MSwgZHkgPSBNYXRoLmFicyh5Mi15MSksDQoJeCA9
IHgxLCB5ID0geTEsDQoJeUluY3IgPSAoeTEgPiB5Mik/IC0xIDogMSwNCglkcncgPSB0cnVlOw0K
CWlmKGR4ID49IGR5KQ0KCXsNCgkJdmFyIHByID0gZHk8PDEsDQoJCXBydSA9IHByIC0gKGR4PDwx
KSwNCgkJcCA9IHByLWR4Ow0KCQl3aGlsZShkeCA+IDApDQoJCXstLWR4Ow0KCQkJaWYoZHJ3KSB0
aGlzLl9ta0Rpdih4LCB5LCAxLCAxKTsNCgkJCWRydyA9ICFkcnc7DQoJCQlpZihwID4gMCkNCgkJ
CXsNCgkJCQl5ICs9IHlJbmNyOw0KCQkJCXAgKz0gcHJ1Ow0KCQkJfQ0KCQkJZWxzZSBwICs9IHBy
Ow0KCQkJKyt4Ow0KCQl9DQoJfQ0KCWVsc2UNCgl7DQoJCXZhciBwciA9IGR4PDwxLA0KCQlwcnUg
PSBwciAtIChkeTw8MSksDQoJCXAgPSBwci1keTsNCgkJd2hpbGUoZHkgPiAwKQ0KCQl7LS1keTsN
CgkJCWlmKGRydykgdGhpcy5fbWtEaXYoeCwgeSwgMSwgMSk7DQoJCQlkcncgPSAhZHJ3Ow0KCQkJ
eSArPSB5SW5jcjsNCgkJCWlmKHAgPiAwKQ0KCQkJew0KCQkJCSsreDsNCgkJCQlwICs9IHBydTsN
CgkJCX0NCgkJCWVsc2UgcCArPSBwcjsNCgkJfQ0KCX0NCglpZihkcncpIHRoaXMuX21rRGl2KHgs
IHksIDEsIDEpOw0KfQ0KDQpmdW5jdGlvbiBfbWtPdihsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQp
DQp7DQoJdmFyIGEgPSAoKyt3aWR0aCk+PjEsIGIgPSAoKytoZWlnaHQpPj4xLA0KCXdvZCA9IHdp
ZHRoJjEsIGhvZCA9IGhlaWdodCYxLA0KCWN4ID0gbGVmdCthLCBjeSA9IHRvcCtiLA0KCXggPSAw
LCB5ID0gYiwNCglveCA9IDAsIG95ID0gYiwNCglhYTIgPSAoYSphKTw8MSwgYWE0ID0gYWEyPDwx
LCBiYjIgPSAoYipiKTw8MSwgYmI0ID0gYmIyPDwxLA0KCXN0ID0gKGFhMj4+MSkqKDEtKGI8PDEp
KSArIGJiMiwNCgl0dCA9IChiYjI+PjEpIC0gYWEyKigoYjw8MSktMSksDQoJdywgaDsNCgl3aGls
ZSh5ID4gMCkNCgl7DQoJCWlmKHN0IDwgMCkNCgkJew0KCQkJc3QgKz0gYmIyKigoeDw8MSkrMyk7
DQoJCQl0dCArPSBiYjQqKCsreCk7DQoJCX0NCgkJZWxzZSBpZih0dCA8IDApDQoJCXsNCgkJCXN0
ICs9IGJiMiooKHg8PDEpKzMpIC0gYWE0Kih5LTEpOw0KCQkJdHQgKz0gYmI0KigrK3gpIC0gYWEy
KigoKHktLSk8PDEpLTMpOw0KCQkJdyA9IHgtb3g7DQoJCQloID0gb3kteTsNCgkJCWlmKCh3JjIp
ICYmIChoJjIpKQ0KCQkJew0KCQkJCXRoaXMuX21rT3ZRZHMoY3gsIGN5LCB4LTIsIHkrMiwgMSwg
MSwgd29kLCBob2QpOw0KCQkJCXRoaXMuX21rT3ZRZHMoY3gsIGN5LCB4LTEsIHkrMSwgMSwgMSwg
d29kLCBob2QpOw0KCQkJfQ0KCQkJZWxzZSB0aGlzLl9ta092UWRzKGN4LCBjeSwgeC0xLCBveSwg
dywgaCwgd29kLCBob2QpOw0KCQkJb3ggPSB4Ow0KCQkJb3kgPSB5Ow0KCQl9DQoJCWVsc2UNCgkJ
ew0KCQkJdHQgLT0gYWEyKigoeTw8MSktMyk7DQoJCQlzdCAtPSBhYTQqKC0teSk7DQoJCX0NCgl9
DQoJdyA9IGEtb3grMTsNCgloID0gKG95PDwxKStob2Q7DQoJeSA9IGN5LW95Ow0KCXRoaXMuX21r
RGl2KGN4LWEsIHksIHcsIGgpOw0KCXRoaXMuX21rRGl2KGN4K294K3dvZC0xLCB5LCB3LCBoKTsN
Cn0NCg0KZnVuY3Rpb24gX21rT3YyRChsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQpDQp7DQoJdmFy
IHMgPSB0aGlzLnN0cm9rZTsNCgl3aWR0aCArPSBzKzE7DQoJaGVpZ2h0ICs9IHMrMTsNCgl2YXIg
YSA9IHdpZHRoPj4xLCBiID0gaGVpZ2h0Pj4xLA0KCXdvZCA9IHdpZHRoJjEsIGhvZCA9IGhlaWdo
dCYxLA0KCWN4ID0gbGVmdCthLCBjeSA9IHRvcCtiLA0KCXggPSAwLCB5ID0gYiwNCglhYTIgPSAo
YSphKTw8MSwgYWE0ID0gYWEyPDwxLCBiYjIgPSAoYipiKTw8MSwgYmI0ID0gYmIyPDwxLA0KCXN0
ID0gKGFhMj4+MSkqKDEtKGI8PDEpKSArIGJiMiwNCgl0dCA9IChiYjI+PjEpIC0gYWEyKigoYjw8
MSktMSk7DQoNCglpZihzLTQgPCAwICYmICghKHMtMikgfHwgd2lkdGgtNTEgPiAwICYmIGhlaWdo
dC01MSA+IDApKQ0KCXsNCgkJdmFyIG94ID0gMCwgb3kgPSBiLA0KCQl3LCBoLA0KCQlweHc7DQoJ
CXdoaWxlKHkgPiAwKQ0KCQl7DQoJCQlpZihzdCA8IDApDQoJCQl7DQoJCQkJc3QgKz0gYmIyKigo
eDw8MSkrMyk7DQoJCQkJdHQgKz0gYmI0KigrK3gpOw0KCQkJfQ0KCQkJZWxzZSBpZih0dCA8IDAp
DQoJCQl7DQoJCQkJc3QgKz0gYmIyKigoeDw8MSkrMykgLSBhYTQqKHktMSk7DQoJCQkJdHQgKz0g
YmI0KigrK3gpIC0gYWEyKigoKHktLSk8PDEpLTMpOw0KCQkJCXcgPSB4LW94Ow0KCQkJCWggPSBv
eS15Ow0KDQoJCQkJaWYody0xKQ0KCQkJCXsNCgkJCQkJcHh3ID0gdysxKyhzJjEpOw0KCQkJCQlo
ID0gczsNCgkJCQl9DQoJCQkJZWxzZSBpZihoLTEpDQoJCQkJew0KCQkJCQlweHcgPSBzOw0KCQkJ
CQloICs9IDErKHMmMSk7DQoJCQkJfQ0KCQkJCWVsc2UgcHh3ID0gaCA9IHM7DQoJCQkJdGhpcy5f
bWtPdlFkcyhjeCwgY3ksIHgtMSwgb3ksIHB4dywgaCwgd29kLCBob2QpOw0KCQkJCW94ID0geDsN
CgkJCQlveSA9IHk7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJdHQgLT0gYWEyKigoeTw8MSkt
Myk7DQoJCQkJc3QgLT0gYWE0KigtLXkpOw0KCQkJfQ0KCQl9DQoJCXRoaXMuX21rRGl2KGN4LWEs
IGN5LW95LCBzLCAob3k8PDEpK2hvZCk7DQoJCXRoaXMuX21rRGl2KGN4K2Erd29kLXMsIGN5LW95
LCBzLCAob3k8PDEpK2hvZCk7DQoJfQ0KDQoJZWxzZQ0KCXsNCgkJdmFyIF9hID0gKHdpZHRoLShz
PDwxKSk+PjEsDQoJCV9iID0gKGhlaWdodC0oczw8MSkpPj4xLA0KCQlfeCA9IDAsIF95ID0gX2Is
DQoJCV9hYTIgPSAoX2EqX2EpPDwxLCBfYWE0ID0gX2FhMjw8MSwgX2JiMiA9IChfYipfYik8PDEs
IF9iYjQgPSBfYmIyPDwxLA0KCQlfc3QgPSAoX2FhMj4+MSkqKDEtKF9iPDwxKSkgKyBfYmIyLA0K
CQlfdHQgPSAoX2JiMj4+MSkgLSBfYWEyKigoX2I8PDEpLTEpLA0KDQoJCXB4bCA9IG5ldyBBcnJh
eSgpLA0KCQlweHQgPSBuZXcgQXJyYXkoKSwNCgkJX3B4YiA9IG5ldyBBcnJheSgpOw0KCQlweGxb
MF0gPSAwOw0KCQlweHRbMF0gPSBiOw0KCQlfcHhiWzBdID0gX2ItMTsNCgkJd2hpbGUoeSA+IDAp
DQoJCXsNCgkJCWlmKHN0IDwgMCkNCgkJCXsNCgkJCQlweGxbcHhsLmxlbmd0aF0gPSB4Ow0KCQkJ
CXB4dFtweHQubGVuZ3RoXSA9IHk7DQoJCQkJc3QgKz0gYmIyKigoeDw8MSkrMyk7DQoJCQkJdHQg
Kz0gYmI0KigrK3gpOw0KCQkJfQ0KCQkJZWxzZSBpZih0dCA8IDApDQoJCQl7DQoJCQkJcHhsW3B4
bC5sZW5ndGhdID0geDsNCgkJCQlzdCArPSBiYjIqKCh4PDwxKSszKSAtIGFhNCooeS0xKTsNCgkJ
CQl0dCArPSBiYjQqKCsreCkgLSBhYTIqKCgoeS0tKTw8MSktMyk7DQoJCQkJcHh0W3B4dC5sZW5n
dGhdID0geTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQl0dCAtPSBhYTIqKCh5PDwxKS0zKTsN
CgkJCQlzdCAtPSBhYTQqKC0teSk7DQoJCQl9DQoNCgkJCWlmKF95ID4gMCkNCgkJCXsNCgkJCQlp
Zihfc3QgPCAwKQ0KCQkJCXsNCgkJCQkJX3N0ICs9IF9iYjIqKChfeDw8MSkrMyk7DQoJCQkJCV90
dCArPSBfYmI0KigrK194KTsNCgkJCQkJX3B4YltfcHhiLmxlbmd0aF0gPSBfeS0xOw0KCQkJCX0N
CgkJCQllbHNlIGlmKF90dCA8IDApDQoJCQkJew0KCQkJCQlfc3QgKz0gX2JiMiooKF94PDwxKSsz
KSAtIF9hYTQqKF95LTEpOw0KCQkJCQlfdHQgKz0gX2JiNCooKytfeCkgLSBfYWEyKigoKF95LS0p
PDwxKS0zKTsNCgkJCQkJX3B4YltfcHhiLmxlbmd0aF0gPSBfeS0xOw0KCQkJCX0NCgkJCQllbHNl
DQoJCQkJew0KCQkJCQlfdHQgLT0gX2FhMiooKF95PDwxKS0zKTsNCgkJCQkJX3N0IC09IF9hYTQq
KC0tX3kpOw0KCQkJCQlfcHhiW19weGIubGVuZ3RoLTFdLS07DQoJCQkJfQ0KCQkJfQ0KCQl9DQoN
CgkJdmFyIG94ID0gLXdvZCwgb3kgPSBiLA0KCQlfb3kgPSBfcHhiWzBdLA0KCQlsID0gcHhsLmxl
bmd0aCwNCgkJdywgaDsNCgkJZm9yKHZhciBpID0gMDsgaSA8IGw7IGkrKykNCgkJew0KCQkJaWYo
dHlwZW9mIF9weGJbaV0gIT0gInVuZGVmaW5lZCIpDQoJCQl7DQoJCQkJaWYoX3B4YltpXSA8IF9v
eSB8fCBweHRbaV0gPCBveSkNCgkJCQl7DQoJCQkJCXggPSBweGxbaV07DQoJCQkJCXRoaXMuX21r
T3ZRZHMoY3gsIGN5LCB4LCBveSwgeC1veCwgb3ktX295LCB3b2QsIGhvZCk7DQoJCQkJCW94ID0g
eDsNCgkJCQkJb3kgPSBweHRbaV07DQoJCQkJCV9veSA9IF9weGJbaV07DQoJCQkJfQ0KCQkJfQ0K
CQkJZWxzZQ0KCQkJew0KCQkJCXggPSBweGxbaV07DQoJCQkJdGhpcy5fbWtEaXYoY3gteCwgY3kt
b3ksIDEsIChveTw8MSkraG9kKTsNCgkJCQl0aGlzLl9ta0RpdihjeCtveCt3b2QsIGN5LW95LCAx
LCAob3k8PDEpK2hvZCk7DQoJCQkJb3ggPSB4Ow0KCQkJCW95ID0gcHh0W2ldOw0KCQkJfQ0KCQl9
DQoJCXRoaXMuX21rRGl2KGN4LWEsIGN5LW95LCAxLCAob3k8PDEpK2hvZCk7DQoJCXRoaXMuX21r
RGl2KGN4K294K3dvZCwgY3ktb3ksIDEsIChveTw8MSkraG9kKTsNCgl9DQp9DQoNCmZ1bmN0aW9u
IF9ta092RG90dChsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQpDQp7DQoJdmFyIGEgPSAoKyt3aWR0
aCk+PjEsIGIgPSAoKytoZWlnaHQpPj4xLA0KCXdvZCA9IHdpZHRoJjEsIGhvZCA9IGhlaWdodCYx
LCBob2R1ID0gaG9kXjEsDQoJY3ggPSBsZWZ0K2EsIGN5ID0gdG9wK2IsDQoJeCA9IDAsIHkgPSBi
LA0KCWFhMiA9IChhKmEpPDwxLCBhYTQgPSBhYTI8PDEsIGJiMiA9IChiKmIpPDwxLCBiYjQgPSBi
YjI8PDEsDQoJc3QgPSAoYWEyPj4xKSooMS0oYjw8MSkpICsgYmIyLA0KCXR0ID0gKGJiMj4+MSkg
LSBhYTIqKChiPDwxKS0xKSwNCglkcncgPSB0cnVlOw0KCXdoaWxlKHkgPiAwKQ0KCXsNCgkJaWYo
c3QgPCAwKQ0KCQl7DQoJCQlzdCArPSBiYjIqKCh4PDwxKSszKTsNCgkJCXR0ICs9IGJiNCooKyt4
KTsNCgkJfQ0KCQllbHNlIGlmKHR0IDwgMCkNCgkJew0KCQkJc3QgKz0gYmIyKigoeDw8MSkrMykg
LSBhYTQqKHktMSk7DQoJCQl0dCArPSBiYjQqKCsreCkgLSBhYTIqKCgoeS0tKTw8MSktMyk7DQoJ
CX0NCgkJZWxzZQ0KCQl7DQoJCQl0dCAtPSBhYTIqKCh5PDwxKS0zKTsNCgkJCXN0IC09IGFhNCoo
LS15KTsNCgkJfQ0KCQlpZihkcncgJiYgeSA+PSBob2R1KSB0aGlzLl9ta092UWRzKGN4LCBjeSwg
eCwgeSwgMSwgMSwgd29kLCBob2QpOw0KCQlkcncgPSAhZHJ3Ow0KCX0NCn0NCg0KZnVuY3Rpb24g
X21rUmVjdCh4LCB5LCB3LCBoKQ0Kew0KCXZhciBzID0gdGhpcy5zdHJva2U7DQoJdGhpcy5fbWtE
aXYoeCwgeSwgdywgcyk7DQoJdGhpcy5fbWtEaXYoeCt3LCB5LCBzLCBoKTsNCgl0aGlzLl9ta0Rp
dih4LCB5K2gsIHcrcywgcyk7DQoJdGhpcy5fbWtEaXYoeCwgeStzLCBzLCBoLXMpOw0KfQ0KDQpm
dW5jdGlvbiBfbWtSZWN0RG90dCh4LCB5LCB3LCBoKQ0Kew0KCXRoaXMuZHJhd0xpbmUoeCwgeSwg
eCt3LCB5KTsNCgl0aGlzLmRyYXdMaW5lKHgrdywgeSwgeCt3LCB5K2gpOw0KCXRoaXMuZHJhd0xp
bmUoeCwgeStoLCB4K3csIHkraCk7DQoJdGhpcy5kcmF3TGluZSh4LCB5LCB4LCB5K2gpOw0KfQ0K
DQpmdW5jdGlvbiBqc2dGb250KCkNCnsNCgl0aGlzLlBMQUlOID0gJ2ZvbnQtd2VpZ2h0Om5vcm1h
bDsnOw0KCXRoaXMuQk9MRCA9ICdmb250LXdlaWdodDpib2xkOyc7DQoJdGhpcy5JVEFMSUMgPSAn
Zm9udC1zdHlsZTppdGFsaWM7JzsNCgl0aGlzLklUQUxJQ19CT0xEID0gdGhpcy5JVEFMSUMgKyB0
aGlzLkJPTEQ7DQoJdGhpcy5CT0xEX0lUQUxJQyA9IHRoaXMuSVRBTElDX0JPTEQ7DQp9DQp2YXIg
Rm9udCA9IG5ldyBqc2dGb250KCk7DQoNCmZ1bmN0aW9uIGpzZ1N0cm9rZSgpDQp7DQoJdGhpcy5E
T1RURUQgPSAtMTsNCn0NCnZhciBTdHJva2UgPSBuZXcganNnU3Ryb2tlKCk7DQoNCmZ1bmN0aW9u
IGpzR3JhcGhpY3MoY252LCB3bmQpDQp7DQoJdGhpcy5zZXRDb2xvciA9IGZ1bmN0aW9uKHgpDQoJ
ew0KCQl0aGlzLmNvbG9yID0geC50b0xvd2VyQ2FzZSgpOw0KCX07DQoNCgl0aGlzLnNldFN0cm9r
ZSA9IGZ1bmN0aW9uKHgpDQoJew0KCQl0aGlzLnN0cm9rZSA9IHg7DQoJCWlmKCEoeCsxKSkNCgkJ
ew0KCQkJdGhpcy5kcmF3TGluZSA9IF9ta0xpbkRvdHQ7DQoJCQl0aGlzLl9ta092ID0gX21rT3ZE
b3R0Ow0KCQkJdGhpcy5kcmF3UmVjdCA9IF9ta1JlY3REb3R0Ow0KCQl9DQoJCWVsc2UgaWYoeC0x
ID4gMCkNCgkJew0KCQkJdGhpcy5kcmF3TGluZSA9IF9ta0xpbjJEOw0KCQkJdGhpcy5fbWtPdiA9
IF9ta092MkQ7DQoJCQl0aGlzLmRyYXdSZWN0ID0gX21rUmVjdDsNCgkJfQ0KCQllbHNlDQoJCXsN
CgkJCXRoaXMuZHJhd0xpbmUgPSBfbWtMaW47DQoJCQl0aGlzLl9ta092ID0gX21rT3Y7DQoJCQl0
aGlzLmRyYXdSZWN0ID0gX21rUmVjdDsNCgkJfQ0KCX07DQoNCgl0aGlzLnNldFByaW50YWJsZSA9
IGZ1bmN0aW9uKGFyZykNCgl7DQoJCXRoaXMucHJpbnRhYmxlID0gYXJnOw0KCQlpZihqZ19mYXN0
KQ0KCQl7DQoJCQl0aGlzLl9ta0RpdiA9IF9ta0RpdkllOw0KCQkJdGhpcy5faHRtUnBjID0gYXJn
PyBfaHRtUHJ0UnBjIDogX2h0bVJwYzsNCgkJfQ0KCQllbHNlIHRoaXMuX21rRGl2ID0gYXJnPyBf
bWtEaXZQcnQgOiBfbWtEaXY7DQoJfTsNCg0KCXRoaXMuc2V0Rm9udCA9IGZ1bmN0aW9uKGZhbSwg
c3osIHN0eSkNCgl7DQoJCXRoaXMuZnRGYW0gPSBmYW07DQoJCXRoaXMuZnRTeiA9IHN6Ow0KCQl0
aGlzLmZ0U3R5ID0gc3R5IHx8IEZvbnQuUExBSU47DQoJfTsNCg0KCXRoaXMuZHJhd1BvbHlsaW5l
ID0gdGhpcy5kcmF3UG9seUxpbmUgPSBmdW5jdGlvbih4LCB5KQ0KCXsNCgkJZm9yICh2YXIgaT14
Lmxlbmd0aCAtIDE7IGk7KQ0KCQl7LS1pOw0KCQkJdGhpcy5kcmF3TGluZSh4W2ldLCB5W2ldLCB4
W2krMV0sIHlbaSsxXSk7DQoJCX0NCgl9Ow0KDQoJdGhpcy5maWxsUmVjdCA9IGZ1bmN0aW9uKHgs
IHksIHcsIGgpDQoJew0KCQl0aGlzLl9ta0Rpdih4LCB5LCB3LCBoKTsNCgl9Ow0KDQoJdGhpcy5k
cmF3UG9seWdvbiA9IGZ1bmN0aW9uKHgsIHkpDQoJew0KCQl0aGlzLmRyYXdQb2x5bGluZSh4LCB5
KTsNCgkJdGhpcy5kcmF3TGluZSh4W3gubGVuZ3RoLTFdLCB5W3gubGVuZ3RoLTFdLCB4WzBdLCB5
WzBdKTsNCgl9Ow0KDQoJdGhpcy5kcmF3RWxsaXBzZSA9IHRoaXMuZHJhd092YWwgPSBmdW5jdGlv
bih4LCB5LCB3LCBoKQ0KCXsNCgkJdGhpcy5fbWtPdih4LCB5LCB3LCBoKTsNCgl9Ow0KDQoJdGhp
cy5maWxsRWxsaXBzZSA9IHRoaXMuZmlsbE92YWwgPSBmdW5jdGlvbihsZWZ0LCB0b3AsIHcsIGgp
DQoJew0KCQl2YXIgYSA9IHc+PjEsIGIgPSBoPj4xLA0KCQl3b2QgPSB3JjEsIGhvZCA9IGgmMSwN
CgkJY3ggPSBsZWZ0K2EsIGN5ID0gdG9wK2IsDQoJCXggPSAwLCB5ID0gYiwgb3kgPSBiLA0KCQlh
YTIgPSAoYSphKTw8MSwgYWE0ID0gYWEyPDwxLCBiYjIgPSAoYipiKTw8MSwgYmI0ID0gYmIyPDwx
LA0KCQlzdCA9IChhYTI+PjEpKigxLShiPDwxKSkgKyBiYjIsDQoJCXR0ID0gKGJiMj4+MSkgLSBh
YTIqKChiPDwxKS0xKSwNCgkJeGwsIGR3LCBkaDsNCgkJaWYodykgd2hpbGUoeSA+IDApDQoJCXsN
CgkJCWlmKHN0IDwgMCkNCgkJCXsNCgkJCQlzdCArPSBiYjIqKCh4PDwxKSszKTsNCgkJCQl0dCAr
PSBiYjQqKCsreCk7DQoJCQl9DQoJCQllbHNlIGlmKHR0IDwgMCkNCgkJCXsNCgkJCQlzdCArPSBi
YjIqKCh4PDwxKSszKSAtIGFhNCooeS0xKTsNCgkJCQl4bCA9IGN4LXg7DQoJCQkJZHcgPSAoeDw8
MSkrd29kOw0KCQkJCXR0ICs9IGJiNCooKyt4KSAtIGFhMiooKCh5LS0pPDwxKS0zKTsNCgkJCQlk
aCA9IG95LXk7DQoJCQkJdGhpcy5fbWtEaXYoeGwsIGN5LW95LCBkdywgZGgpOw0KCQkJCXRoaXMu
X21rRGl2KHhsLCBjeSt5K2hvZCwgZHcsIGRoKTsNCgkJCQlveSA9IHk7DQoJCQl9DQoJCQllbHNl
DQoJCQl7DQoJCQkJdHQgLT0gYWEyKigoeTw8MSktMyk7DQoJCQkJc3QgLT0gYWE0KigtLXkpOw0K
CQkJfQ0KCQl9DQoJCXRoaXMuX21rRGl2KGN4LWEsIGN5LW95LCB3LCAob3k8PDEpK2hvZCk7DQoJ
fTsNCg0KCXRoaXMuZmlsbEFyYyA9IGZ1bmN0aW9uKGlMLCBpVCwgaVcsIGlILCBmQW5nQSwgZkFu
Z1opDQoJew0KCQl2YXIgYSA9IGlXPj4xLCBiID0gaUg+PjEsDQoJCWlPZGRzID0gKGlXJjEpIHwg
KChpSCYxKSA8PCAxNiksDQoJCWN4ID0gaUwrYSwgY3kgPSBpVCtiLA0KCQl4ID0gMCwgeSA9IGIs
IG94ID0geCwgb3kgPSB5LA0KCQlhYTIgPSAoYSphKTw8MSwgYWE0ID0gYWEyPDwxLCBiYjIgPSAo
YipiKTw8MSwgYmI0ID0gYmIyPDwxLA0KCQlzdCA9IChhYTI+PjEpKigxLShiPDwxKSkgKyBiYjIs
DQoJCXR0ID0gKGJiMj4+MSkgLSBhYTIqKChiPDwxKS0xKSwNCgkJLy8gVmFycyBmb3IgcmFkaWFs
IGJvdW5kYXJ5IGxpbmVzDQoJCXhFbmRBLCB5RW5kQSwgeEVuZFosIHlFbmRaLA0KCQlpU2VjdHMg
PSAoMSA8PCAoTWF0aC5mbG9vcigoZkFuZ0EgJT0gMzYwLjApLzE4MC4wKSA8PCAzKSkNCgkJCQl8
ICgyIDw8IChNYXRoLmZsb29yKChmQW5nWiAlPSAzNjAuMCkvMTgwLjApIDw8IDMpKQ0KCQkJCXwg
KChmQW5nQSA+PSBmQW5nWikgPDwgMTYpLA0KCQlhQm5kQSA9IG5ldyBBcnJheShiKzEpLCBhQm5k
WiA9IG5ldyBBcnJheShiKzEpOw0KCQkNCgkJLy8gU2V0IHVwIHJhZGlhbCBib3VuZGFyeSBsaW5l
cw0KCQlmQW5nQSAqPSBNYXRoLlBJLzE4MC4wOw0KCQlmQW5nWiAqPSBNYXRoLlBJLzE4MC4wOw0K
CQl4RW5kQSA9IGN4K01hdGgucm91bmQoYSpNYXRoLmNvcyhmQW5nQSkpOw0KCQl5RW5kQSA9IGN5
K01hdGgucm91bmQoLWIqTWF0aC5zaW4oZkFuZ0EpKTsNCgkJX21rTGluVmlydChhQm5kQSwgY3gs
IGN5LCB4RW5kQSwgeUVuZEEpOw0KCQl4RW5kWiA9IGN4K01hdGgucm91bmQoYSpNYXRoLmNvcyhm
QW5nWikpOw0KCQl5RW5kWiA9IGN5K01hdGgucm91bmQoLWIqTWF0aC5zaW4oZkFuZ1opKTsNCgkJ
X21rTGluVmlydChhQm5kWiwgY3gsIGN5LCB4RW5kWiwgeUVuZFopOw0KDQoJCXdoaWxlKHkgPiAw
KQ0KCQl7DQoJCQlpZihzdCA8IDApIC8vIEFkdmFuY2UgeA0KCQkJew0KCQkJCXN0ICs9IGJiMioo
KHg8PDEpKzMpOw0KCQkJCXR0ICs9IGJiNCooKyt4KTsNCgkJCX0NCgkJCWVsc2UgaWYodHQgPCAw
KSAvLyBBZHZhbmNlIHggYW5kIHkNCgkJCXsNCgkJCQlzdCArPSBiYjIqKCh4PDwxKSszKSAtIGFh
NCooeS0xKTsNCgkJCQlveCA9IHg7DQoJCQkJdHQgKz0gYmI0KigrK3gpIC0gYWEyKigoKHktLSk8
PDEpLTMpOw0KCQkJCXRoaXMuX21rQXJjRGl2KG94LCB5LCBveSwgY3gsIGN5LCBpT2RkcywgYUJu
ZEEsIGFCbmRaLCBpU2VjdHMpOw0KCQkJCW95ID0geTsNCgkJCX0NCgkJCWVsc2UgLy8gQWR2YW5j
ZSB5DQoJCQl7DQoJCQkJdHQgLT0gYWEyKigoeTw8MSktMyk7DQoJCQkJc3QgLT0gYWE0KigtLXkp
Ow0KCQkJCWlmKHkgJiYgKGFCbmRBW3ldICE9IGFCbmRBW3ktMV0gfHwgYUJuZFpbeV0gIT0gYUJu
ZFpbeS0xXSkpDQoJCQkJew0KCQkJCQl0aGlzLl9ta0FyY0Rpdih4LCB5LCBveSwgY3gsIGN5LCBp
T2RkcywgYUJuZEEsIGFCbmRaLCBpU2VjdHMpOw0KCQkJCQlveCA9IHg7DQoJCQkJCW95ID0geTsN
CgkJCQl9DQoJCQl9DQoJCX0NCgkJdGhpcy5fbWtBcmNEaXYoeCwgMCwgb3ksIGN4LCBjeSwgaU9k
ZHMsIGFCbmRBLCBhQm5kWiwgaVNlY3RzKTsNCgkJaWYoaU9kZHMgPj4gMTYpIC8vIE9kZCBoZWln
aHQNCgkJew0KCQkJaWYoaVNlY3RzID4+IDE2KSAvLyBTdGFydC1hbmdsZSA+IGVuZC1hbmdsZQ0K
CQkJew0KCQkJCXZhciB4bCA9ICh5RW5kQSA8PSBjeSB8fCB5RW5kWiA+IGN5KT8gKGN4IC0geCkg
OiBjeDsNCgkJCQl0aGlzLl9ta0Rpdih4bCwgY3ksIHggKyBjeCAtIHhsICsgKGlPZGRzICYgMHhm
ZmZmKSwgMSk7DQoJCQl9DQoJCQllbHNlIGlmKChpU2VjdHMgJiAweDAxKSAmJiB5RW5kWiA+IGN5
KQ0KCQkJCXRoaXMuX21rRGl2KGN4IC0geCwgY3ksIHgsIDEpOw0KCQl9DQoJfTsNCg0KLyogZmls
bFBvbHlnb24gbWV0aG9kLCBpbXBsZW1lbnRlZCBieSBNYXR0aGlldSBIYWxsZXIuDQpUaGlzIGph
dmFzY3JpcHQgZnVuY3Rpb24gaXMgYW4gYWRhcHRhdGlvbiBvZiB0aGUgZ2RJbWFnZUZpbGxlZFBv
bHlnb24gZm9yIFdhbHRlciBab3JuIGxpYi4NCkMgc291cmNlIG9mIEdEIDEuOC40IGZvdW5kIGF0
IGh0dHA6Ly93d3cuYm91dGVsbC5jb20vZ2QvDQoNClRIQU5LUyB0byBLaXJzdGVuIFNjaHVseiBm
b3IgdGhlIHBvbHlnb24gZml4ZXMhDQoNClRoZSBpbnRlcnNlY3Rpb24gZmluZGluZyB0ZWNobmlx
dWUgb2YgdGhpcyBjb2RlIGNvdWxkIGJlIGltcHJvdmVkDQpieSByZW1lbWJlcmluZyB0aGUgcHJl
dmlvdXMgaW50ZXJ0ZXJzZWN0aW9uLCBhbmQgYnkgdXNpbmcgdGhlIHNsb3BlLg0KVGhhdCBjb3Vs
ZCBoZWxwIHRvIGFkanVzdCBpbnRlcnNlY3Rpb25zIHRvIHByb2R1Y2UgYSBuaWNlDQppbnRlcmlv
cl9leHRyZW1hLiAqLw0KCXRoaXMuZmlsbFBvbHlnb24gPSBmdW5jdGlvbihhcnJheV94LCBhcnJh
eV95KQ0KCXsNCgkJdmFyIGk7DQoJCXZhciB5Ow0KCQl2YXIgbWlueSwgbWF4eTsNCgkJdmFyIHgx
LCB5MTsNCgkJdmFyIHgyLCB5MjsNCgkJdmFyIGluZDEsIGluZDI7DQoJCXZhciBpbnRzOw0KDQoJ
CXZhciBuID0gYXJyYXlfeC5sZW5ndGg7DQoJCWlmKCFuKSByZXR1cm47DQoNCgkJbWlueSA9IGFy
cmF5X3lbMF07DQoJCW1heHkgPSBhcnJheV95WzBdOw0KCQlmb3IoaSA9IDE7IGkgPCBuOyBpKysp
DQoJCXsNCgkJCWlmKGFycmF5X3lbaV0gPCBtaW55KQ0KCQkJCW1pbnkgPSBhcnJheV95W2ldOw0K
DQoJCQlpZihhcnJheV95W2ldID4gbWF4eSkNCgkJCQltYXh5ID0gYXJyYXlfeVtpXTsNCgkJfQ0K
CQlmb3IoeSA9IG1pbnk7IHkgPD0gbWF4eTsgeSsrKQ0KCQl7DQoJCQl2YXIgcG9seUludHMgPSBu
ZXcgQXJyYXkoKTsNCgkJCWludHMgPSAwOw0KCQkJZm9yKGkgPSAwOyBpIDwgbjsgaSsrKQ0KCQkJ
ew0KCQkJCWlmKCFpKQ0KCQkJCXsNCgkJCQkJaW5kMSA9IG4tMTsNCgkJCQkJaW5kMiA9IDA7DQoJ
CQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCWluZDEgPSBpLTE7DQoJCQkJCWluZDIgPSBpOw0K
CQkJCX0NCgkJCQl5MSA9IGFycmF5X3lbaW5kMV07DQoJCQkJeTIgPSBhcnJheV95W2luZDJdOw0K
CQkJCWlmKHkxIDwgeTIpDQoJCQkJew0KCQkJCQl4MSA9IGFycmF5X3hbaW5kMV07DQoJCQkJCXgy
ID0gYXJyYXlfeFtpbmQyXTsNCgkJCQl9DQoJCQkJZWxzZSBpZih5MSA+IHkyKQ0KCQkJCXsNCgkJ
CQkJeTIgPSBhcnJheV95W2luZDFdOw0KCQkJCQl5MSA9IGFycmF5X3lbaW5kMl07DQoJCQkJCXgy
ID0gYXJyYXlfeFtpbmQxXTsNCgkJCQkJeDEgPSBhcnJheV94W2luZDJdOw0KCQkJCX0NCgkJCQll
bHNlIGNvbnRpbnVlOw0KDQoJCQkJIC8vICBNb2RpZmllZCAxMS4gMi4gMjAwNCBXYWx0ZXIgWm9y
bg0KCQkJCWlmKCh5ID49IHkxKSAmJiAoeSA8IHkyKSkNCgkJCQkJcG9seUludHNbaW50cysrXSA9
IE1hdGgucm91bmQoKHkteTEpICogKHgyLXgxKSAvICh5Mi15MSkgKyB4MSk7DQoNCgkJCQllbHNl
IGlmKCh5ID09IG1heHkpICYmICh5ID4geTEpICYmICh5IDw9IHkyKSkNCgkJCQkJcG9seUludHNb
aW50cysrXSA9IE1hdGgucm91bmQoKHkteTEpICogKHgyLXgxKSAvICh5Mi15MSkgKyB4MSk7DQoJ
CQl9DQoJCQlwb2x5SW50cy5zb3J0KF9Db21wSW50KTsNCgkJCWZvcihpID0gMDsgaSA8IGludHM7
IGkrPTIpDQoJCQkJdGhpcy5fbWtEaXYocG9seUludHNbaV0sIHksIHBvbHlJbnRzW2krMV0tcG9s
eUludHNbaV0rMSwgMSk7DQoJCX0NCgl9Ow0KDQoJdGhpcy5kcmF3U3RyaW5nID0gZnVuY3Rpb24o
dHh0LCB4LCB5KQ0KCXsNCgkJdGhpcy5odG0gKz0gJzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29s
dXRlO3doaXRlLXNwYWNlOm5vd3JhcDsnKw0KCQkJJ2xlZnQ6JyArIHggKyAncHg7JysNCgkJCSd0
b3A6JyArIHkgKyAncHg7JysNCgkJCSdmb250LWZhbWlseTonICsgIHRoaXMuZnRGYW0gKyAnOycr
DQoJCQknZm9udC1zaXplOicgKyB0aGlzLmZ0U3ogKyAnOycrDQoJCQknY29sb3I6JyArIHRoaXMu
Y29sb3IgKyAnOycgKyB0aGlzLmZ0U3R5ICsgJyI+JysNCgkJCXR4dCArDQoJCQknPFwvZGl2Pic7
DQoJfTsNCg0KLyogZHJhd1N0cmluZ1JlY3QoKSBhZGRlZCBieSBSaWNrIEJsb21tZXJzLg0KQWxs
b3dzIHRvIHNwZWNpZnkgdGhlIHNpemUgb2YgdGhlIHRleHQgcmVjdGFuZ2xlIGFuZCB0byBhbGln
biB0aGUNCnRleHQgYm90aCBob3Jpem9udGFsbHkgKGUuZy4gcmlnaHQpIGFuZCB2ZXJ0aWNhbGx5
IHdpdGhpbiB0aGF0IHJlY3RhbmdsZSAqLw0KCXRoaXMuZHJhd1N0cmluZ1JlY3QgPSBmdW5jdGlv
bih0eHQsIHgsIHksIHdpZHRoLCBoYWxpZ24pDQoJew0KCQl0aGlzLmh0bSArPSAnPGRpdiBzdHls
ZT0icG9zaXRpb246YWJzb2x1dGU7b3ZlcmZsb3c6aGlkZGVuOycrDQoJCQknbGVmdDonICsgeCAr
ICdweDsnKw0KCQkJJ3RvcDonICsgeSArICdweDsnKw0KCQkJJ3dpZHRoOicrd2lkdGggKydweDsn
Kw0KCQkJJ3RleHQtYWxpZ246JytoYWxpZ24rJzsnKw0KCQkJJ2ZvbnQtZmFtaWx5OicgKyAgdGhp
cy5mdEZhbSArICc7JysNCgkJCSdmb250LXNpemU6JyArIHRoaXMuZnRTeiArICc7JysNCgkJCSdj
b2xvcjonICsgdGhpcy5jb2xvciArICc7JyArIHRoaXMuZnRTdHkgKyAnIj4nKw0KCQkJdHh0ICsN
CgkJCSc8XC9kaXY+JzsNCgl9Ow0KDQoJdGhpcy5kcmF3SW1hZ2UgPSBmdW5jdGlvbihpbWdTcmMs
IHgsIHksIHcsIGgsIGEpDQoJew0KCQl0aGlzLmh0bSArPSAnPGRpdiBzdHlsZT0icG9zaXRpb246
YWJzb2x1dGU7JysNCgkJCSdsZWZ0OicgKyB4ICsgJ3B4OycrDQoJCQkndG9wOicgKyB5ICsgJ3B4
OycrDQoJCQknd2lkdGg6JyArICB3ICsgJ3B4OycrDQoJCQknaGVpZ2h0OicgKyBoICsgJ3B4OyI+
JysNCgkJCSc8aW1nIHNyYz0iJyArIGltZ1NyYyArICciIHdpZHRoPSInICsgdyArICciIGhlaWdo
dD0iJyArIGggKyAnIicgKyAoYT8gKCcgJythKSA6ICcnKSArICc+JysNCgkJCSc8XC9kaXY+JzsN
Cgl9Ow0KDQoJdGhpcy5jbGVhciA9IGZ1bmN0aW9uKCkNCgl7DQoJCXRoaXMuaHRtID0gIiI7DQoJ
CWlmKHRoaXMuY252KSB0aGlzLmNudi5pbm5lckhUTUwgPSAiIjsNCgl9Ow0KDQoJdGhpcy5fbWtP
dlFkcyA9IGZ1bmN0aW9uKGN4LCBjeSwgeCwgeSwgdywgaCwgd29kLCBob2QpDQoJew0KCQl2YXIg
eGwgPSBjeCAtIHgsIHhyID0gY3ggKyB4ICsgd29kIC0gdywgeXQgPSBjeSAtIHksIHliID0gY3kg
KyB5ICsgaG9kIC0gaDsNCgkJaWYoeHIgPiB4bCt3KQ0KCQl7DQoJCQl0aGlzLl9ta0Rpdih4ciwg
eXQsIHcsIGgpOw0KCQkJdGhpcy5fbWtEaXYoeHIsIHliLCB3LCBoKTsNCgkJfQ0KCQllbHNlDQoJ
CQl3ID0geHIgLSB4bCArIHc7DQoJCXRoaXMuX21rRGl2KHhsLCB5dCwgdywgaCk7DQoJCXRoaXMu
X21rRGl2KHhsLCB5YiwgdywgaCk7DQoJfTsNCgkNCgl0aGlzLl9ta0FyY0RpdiA9IGZ1bmN0aW9u
KHgsIHksIG95LCBjeCwgY3ksIGlPZGRzLCBhQm5kQSwgYUJuZFosIGlTZWN0cykNCgl7DQoJCXZh
ciB4ckRlZiA9IGN4ICsgeCArIChpT2RkcyAmIDB4ZmZmZiksIHkyLCBoID0gb3kgLSB5LCB4bCwg
eHIsIHc7DQoNCgkJaWYoIWgpIGggPSAxOw0KCQl4ID0gY3ggLSB4Ow0KDQoJCWlmKGlTZWN0cyAm
IDB4ZmYwMDAwKSAvLyBTdGFydC1hbmdsZSA+IGVuZC1hbmdsZQ0KCQl7DQoJCQl5MiA9IGN5IC0g
eSAtIGg7DQoJCQlpZihpU2VjdHMgJiAweDAwZmYpDQoJCQl7DQoJCQkJaWYoaVNlY3RzICYgMHgw
MikNCgkJCQl7DQoJCQkJCXhsID0gTWF0aC5tYXgoeCwgYUJuZFpbeV0pOw0KCQkJCQl3ID0geHJE
ZWYgLSB4bDsNCgkJCQkJaWYodyA+IDApIHRoaXMuX21rRGl2KHhsLCB5MiwgdywgaCk7DQoJCQkJ
fQ0KCQkJCWlmKGlTZWN0cyAmIDB4MDEpDQoJCQkJew0KCQkJCQl4ciA9IE1hdGgubWluKHhyRGVm
LCBhQm5kQVt5XSk7DQoJCQkJCXcgPSB4ciAtIHg7DQoJCQkJCWlmKHcgPiAwKSB0aGlzLl9ta0Rp
dih4LCB5MiwgdywgaCk7DQoJCQkJfQ0KCQkJfQ0KCQkJZWxzZQ0KCQkJCXRoaXMuX21rRGl2KHgs
IHkyLCB4ckRlZiAtIHgsIGgpOw0KCQkJeTIgPSBjeSArIHkgKyAoaU9kZHMgPj4gMTYpOw0KCQkJ
aWYoaVNlY3RzICYgMHhmZjAwKQ0KCQkJew0KCQkJCWlmKGlTZWN0cyAmIDB4MDEwMCkNCgkJCQl7
DQoJCQkJCXhsID0gTWF0aC5tYXgoeCwgYUJuZEFbeV0pOw0KCQkJCQl3ID0geHJEZWYgLSB4bDsN
CgkJCQkJaWYodyA+IDApIHRoaXMuX21rRGl2KHhsLCB5MiwgdywgaCk7DQoJCQkJfQ0KCQkJCWlm
KGlTZWN0cyAmIDB4MDIwMCkNCgkJCQl7DQoJCQkJCXhyID0gTWF0aC5taW4oeHJEZWYsIGFCbmRa
W3ldKTsNCgkJCQkJdyA9IHhyIC0geDsNCgkJCQkJaWYodyA+IDApIHRoaXMuX21rRGl2KHgsIHky
LCB3LCBoKTsNCgkJCQl9DQoJCQl9DQoJCQllbHNlDQoJCQkJdGhpcy5fbWtEaXYoeCwgeTIsIHhy
RGVmIC0geCwgaCk7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQlpZihpU2VjdHMgJiAweDAwZmYpDQoJ
CQl7DQoJCQkJaWYoaVNlY3RzICYgMHgwMikNCgkJCQkJeGwgPSBNYXRoLm1heCh4LCBhQm5kWlt5
XSk7DQoJCQkJZWxzZQ0KCQkJCQl4bCA9IHg7DQoJCQkJaWYoaVNlY3RzICYgMHgwMSkNCgkJCQkJ
eHIgPSBNYXRoLm1pbih4ckRlZiwgYUJuZEFbeV0pOw0KCQkJCWVsc2UNCgkJCQkJeHIgPSB4ckRl
ZjsNCgkJCQl5MiA9IGN5IC0geSAtIGg7DQoJCQkJdyA9IHhyIC0geGw7DQoJCQkJaWYodyA+IDAp
IHRoaXMuX21rRGl2KHhsLCB5MiwgdywgaCk7DQoJCQl9DQoJCQlpZihpU2VjdHMgJiAweGZmMDAp
DQoJCQl7DQoJCQkJaWYoaVNlY3RzICYgMHgwMTAwKQ0KCQkJCQl4bCA9IE1hdGgubWF4KHgsIGFC
bmRBW3ldKTsNCgkJCQllbHNlDQoJCQkJCXhsID0geDsNCgkJCQlpZihpU2VjdHMgJiAweDAyMDAp
DQoJCQkJCXhyID0gTWF0aC5taW4oeHJEZWYsIGFCbmRaW3ldKTsNCgkJCQllbHNlDQoJCQkJCXhy
ID0geHJEZWY7DQoJCQkJeTIgPSBjeSArIHkgKyAoaU9kZHMgPj4gMTYpOw0KCQkJCXcgPSB4ciAt
IHhsOw0KCQkJCWlmKHcgPiAwKSB0aGlzLl9ta0Rpdih4bCwgeTIsIHcsIGgpOw0KCQkJfQ0KCQl9
DQoJfTsNCg0KCXRoaXMuc2V0U3Ryb2tlKDEpOw0KCXRoaXMuc2V0Rm9udCgidmVyZGFuYSxnZW5l
dmEsaGVsdmV0aWNhLHNhbnMtc2VyaWYiLCAiMTJweCIsIEZvbnQuUExBSU4pOw0KCXRoaXMuY29s
b3IgPSAiIzAwMDAwMCI7DQoJdGhpcy5odG0gPSAiIjsNCgl0aGlzLnduZCA9IHduZCB8fCB3aW5k
b3c7DQoNCglpZighamdfb2spIF9jaGtESFRNKCk7DQoJaWYoamdfb2spDQoJew0KCQlpZihjbnYp
DQoJCXsNCgkJCWlmKHR5cGVvZihjbnYpID09ICJzdHJpbmciKQ0KCQkJCXRoaXMuY29udCA9IGRv
Y3VtZW50LmFsbD8gKHRoaXMud25kLmRvY3VtZW50LmFsbFtjbnZdIHx8IG51bGwpDQoJCQkJCTog
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQ/ICh0aGlzLnduZC5kb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZChjbnYpIHx8IG51bGwpDQoJCQkJCTogbnVsbDsNCgkJCWVsc2UgaWYoY252ID09IHdpbmRvdy5k
b2N1bWVudCkNCgkJCQl0aGlzLmNvbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdOw0KCQkJLy8gSWYgY252IGlzIGEgZGlyZWN0IHJlZmVyZW5jZSB0byBhIGNhbnZh
cyBET00gbm9kZQ0KCQkJLy8gKG9wdGlvbiBzdWdnZXN0ZWQgYnkgQW5kcmVhcyBMdWxlaWNoKQ0K
CQkJZWxzZSB0aGlzLmNvbnQgPSBjbnY7DQoJCQkvLyBDcmVhdGUgbmV3IGNhbnZhcyBpbnNpZGUg
Y29udGFpbmVyIERJVi4gVGh1cyB0aGUgZHJhd2luZyBhbmQgY2xlYXJpbmcNCgkJCS8vIG1ldGhv
ZHMgd29uJ3QgaW50ZXJmZXJlIHdpdGggdGhlIGNvbnRhaW5lcidzIGlubmVyIGh0bWwuDQoJCQkv
LyBTb2x1dGlvbiBzdWdnZXN0ZWQgYnkgVmxhZGltaXIuDQoJCQl0aGlzLmNudiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KCQkJdGhpcy5jb250LmFwcGVuZENoaWxkKHRoaXMuY252
KTsNCgkJCXRoaXMucGFpbnQgPSBqZ19kb20/IF9wbnRDbnZEb20gOiBfcG50Q252SWU7DQoJCX0N
CgkJZWxzZQ0KCQkJdGhpcy5wYWludCA9IF9wbnREb2M7DQoJfQ0KCWVsc2UNCgkJdGhpcy5wYWlu
dCA9IF9wbnROOw0KDQoJdGhpcy5zZXRQcmludGFibGUoZmFsc2UpOw0KfQ0KDQpmdW5jdGlvbiBf
bWtMaW5WaXJ0KGFMaW4sIHgxLCB5MSwgeDIsIHkyKQ0Kew0KCXZhciBkeCA9IE1hdGguYWJzKHgy
LXgxKSwgZHkgPSBNYXRoLmFicyh5Mi15MSksDQoJeCA9IHgxLCB5ID0geTEsDQoJeEluY3IgPSAo
eDEgPiB4Mik/IC0xIDogMSwNCgl5SW5jciA9ICh5MSA+IHkyKT8gLTEgOiAxLA0KCXAsDQoJaSA9
IDA7DQoJaWYoZHggPj0gZHkpDQoJew0KCQl2YXIgcHIgPSBkeTw8MSwNCgkJcHJ1ID0gcHIgLSAo
ZHg8PDEpOw0KCQlwID0gcHItZHg7DQoJCXdoaWxlKGR4ID4gMCkNCgkJey0tZHg7DQoJCQlpZihw
ID4gMCkgICAgLy8gIEluY3JlbWVudCB5DQoJCQl7DQoJCQkJYUxpbltpKytdID0geDsNCgkJCQl5
ICs9IHlJbmNyOw0KCQkJCXAgKz0gcHJ1Ow0KCQkJfQ0KCQkJZWxzZSBwICs9IHByOw0KCQkJeCAr
PSB4SW5jcjsNCgkJfQ0KCX0NCgllbHNlDQoJew0KCQl2YXIgcHIgPSBkeDw8MSwNCgkJcHJ1ID0g
cHIgLSAoZHk8PDEpOw0KCQlwID0gcHItZHk7DQoJCXdoaWxlKGR5ID4gMCkNCgkJey0tZHk7DQoJ
CQl5ICs9IHlJbmNyOw0KCQkJYUxpbltpKytdID0geDsNCgkJCWlmKHAgPiAwKSAgICAvLyAgSW5j
cmVtZW50IHgNCgkJCXsNCgkJCQl4ICs9IHhJbmNyOw0KCQkJCXAgKz0gcHJ1Ow0KCQkJfQ0KCQkJ
ZWxzZSBwICs9IHByOw0KCQl9DQoJfQ0KCWZvcih2YXIgbGVuID0gYUxpbi5sZW5ndGgsIGkgPSBs
ZW4taTsgaTspDQoJCWFMaW5bbGVuLShpLS0pXSA9IHg7DQp9Ow0KDQpmdW5jdGlvbiBfQ29tcElu
dCh4LCB5KQ0Kew0KCXJldHVybih4IC0geSk7DQp9DQoNCg0KPC9zY3JpcHQ+DQo8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+DQp2YXIgbW91c2V4ID0gMDsNCnZhciBtb3VzZXkgPSAwOw0K
dmFyIGdyYWJ4ID0gMDsNCnZhciBncmFieSA9IDA7DQp2YXIgb3JpeCA9IDA7DQp2YXIgb3JpeSA9
IDA7DQp2YXIgZWxleCA9IDA7DQp2YXIgZWxleSA9IDA7DQp2YXIgYWxnb3IgPSAwOw0KDQp2YXIg
ZHJhZ29iaiA9IG51bGw7DQoNCmZ1bmN0aW9uIGZhbHNlZnVuYygpIHsgcmV0dXJuIGZhbHNlOyB9
IC8vIHVzZWQgdG8gYmxvY2sgY2FzY2FkaW5nIGV2ZW50cw0KDQpmdW5jdGlvbiBpbml0KCkNCnsN
CiAgZG9jdW1lbnQub25tb3VzZW1vdmUgPSB1cGRhdGU7IC8vIHVwZGF0ZShldmVudCkgaW1wbGll
ZCBvbiBOUywgdXBkYXRlKG51bGwpIGltcGxpZWQgb24gSUUNCiAgdXBkYXRlKCk7DQp9DQoNCmZ1
bmN0aW9uIGdldE1vdXNlWFkoZSkgLy8gd29ya3Mgb24gSUU2LEZGLE1veixPcGVyYTcNCnsgDQog
IGlmICghZSkgZSA9IHdpbmRvdy5ldmVudDsgLy8gd29ya3Mgb24gSUUsIGJ1dCBub3QgTlMgKHdl
IHJlbHkgb24gTlMgcGFzc2luZyB1cyB0aGUgZXZlbnQpDQogDQogIGlmIChlKQ0KICB7IA0KICAg
IGlmIChlLnBhZ2VYIHx8IGUucGFnZVkpDQogICAgeyAvLyB0aGlzIGRvZXNuJ3Qgd29yayBvbiBJ
RTYhISAod29ya3Mgb24gRkYsTW96LE9wZXJhNykNCiAgICAgIG1vdXNleCA9IGUucGFnZVg7DQog
ICAgICBtb3VzZXkgPSBlLnBhZ2VZOw0KICAgICAgYWxnb3IgPSAnW2UucGFnZVhdJzsNCiAgICAg
IGlmIChlLmNsaWVudFggfHwgZS5jbGllbnRZKSBhbGdvciArPSAnIFtlLmNsaWVudFhdICcNCiAg
ICB9DQogICAgZWxzZSBpZiAoZS5jbGllbnRYIHx8IGUuY2xpZW50WSkNCiAgICB7IC8vIHdvcmtz
IG9uIElFNixGRixNb3osT3BlcmE3DQogICAgICAvLyBOb3RlOiBJIGFtIGFkZGluZyB0b2dldGhl
ciBib3RoIHRoZSAiYm9keSIgYW5kICJkb2N1bWVudEVsZW1lbnQiIHNjcm9sbCBwb3NpdGlvbnMN
CiAgICAgIC8vICAgICAgIHRoaXMgbGV0cyBtZSBjb3ZlciBmb3IgdGhlIHF1aXJrcyB0aGF0IGhh
cHBlbiBiYXNlZCBvbiB0aGUgImRvY3R5cGUiIG9mIHRoZSBodG1sIHBhZ2UuDQogICAgICAvLyAg
ICAgICAgIChleGFtcGxlOiBJRTYgaW4gY29tcGF0aWJpbGl0eSBtb2RlIG9yIHN0cmljdCkNCiAg
ICAgIC8vICAgICAgIEJhc2VkIG9uIHRoZSBkaWZmZXJlbnQgd2F5cyB0aGF0IElFLEZGLE1veixP
cGVyYSB1c2UgdGhlc2UgU2Nyb2xsVmFsdWVzIGZvciBib2R5IGFuZCBkb2N1bWVudEVsZW1lbnQN
CiAgICAgIC8vICAgICAgIGl0IGxvb2tzIGxpa2UgdGhleSB3aWxsIGZpbGwgRUlUSEVSIE9ORSBT
Q1JPTEwgVkFMVUUgT1IgVEhFIE9USEVSLCBOT1QgQk9USCANCiAgICAgIC8vICAgICAgICAgKGZy
b20gaW5mbyBhdCBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2pzL2RvY3R5cGVzLmh0bWwpDQog
ICAgICBtb3VzZXggPSBlLmNsaWVudFggKyBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgKyBkb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDsNCiAgICAgIG1vdXNleSA9IGUuY2xpZW50
WSArIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wICsgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNj
cm9sbFRvcDsNCiAgICAgIGFsZ29yID0gJ1tlLmNsaWVudFhdJzsNCiAgICAgIGlmIChlLnBhZ2VY
IHx8IGUucGFnZVkpIGFsZ29yICs9ICcgW2UucGFnZVhdICcNCiAgICB9DQogIH0NCn0NCg0KZnVu
Y3Rpb24gZ3JhYihjb250ZXh0KQ0Kew0KICBkb2N1bWVudC5vbm1vdXNlZG93biA9IGZhbHNlZnVu
YzsgLy8gaW4gTlMgdGhpcyBwcmV2ZW50cyBjYXNjYWRpbmcgb2YgZXZlbnRzLCB0aHVzIGRpc2Fi
bGluZyB0ZXh0IHNlbGVjdGlvbg0KICBkcmFnb2JqID0gY29udGV4dDsNCiAgZHJhZ29iai5zdHls
ZS56SW5kZXggPSAxMDsgLy8gbW92ZSBpdCB0byB0aGUgdG9wDQogIGRvY3VtZW50Lm9ubW91c2Vt
b3ZlID0gZHJhZzsNCiAgZG9jdW1lbnQub25tb3VzZXVwID0gZHJvcDsNCiAgZ3JhYnggPSBtb3Vz
ZXg7DQogIGdyYWJ5ID0gbW91c2V5Ow0KICBlbGV4ID0gb3JpeCA9IGRyYWdvYmoub2Zmc2V0TGVm
dDsNCiAgZWxleSA9IG9yaXkgPSBkcmFnb2JqLm9mZnNldFRvcDsNCiAgdXBkYXRlKCk7IA0KfQ0K
DQpmdW5jdGlvbiBkcmFnKGUpIC8vIHBhcmFtZXRlciBwYXNzaW5nIGlzIGltcG9ydGFudCBmb3Ig
TlMgZmFtaWx5IA0Kew0KICBpZiAoZHJhZ29iaikNCiAgew0KICAgIGVsZXggPSBvcml4ICsgKG1v
dXNleC1ncmFieCk7DQogICAgZWxleSA9IG9yaXkgKyAobW91c2V5LWdyYWJ5KTsNCiAgICBkcmFn
b2JqLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsNCiAgICBkcmFnb2JqLnN0eWxlLmxlZnQg
PSAoZWxleCkudG9TdHJpbmcoMTApICsgJ3B4JzsNCiAgICBkcmFnb2JqLnN0eWxlLnRvcCAgPSAo
ZWxleSkudG9TdHJpbmcoMTApICsgJ3B4JzsNCiAgfQ0KICB1cGRhdGUoZSk7DQogIHJldHVybiBm
YWxzZTsgLy8gaW4gSUUgdGhpcyBwcmV2ZW50cyBjYXNjYWRpbmcgb2YgZXZlbnRzLCB0aHVzIHRl
eHQgc2VsZWN0aW9uIGlzIGRpc2FibGVkDQp9DQoNCmZ1bmN0aW9uIGRyb3AoKQ0Kew0KCWlmIChk
cmFnb2JqKQ0KCXsNCgkJZHJhZ29iai5zdHlsZS56SW5kZXggPSAwOw0KCQlkcmFnb2JqID0gbnVs
bDsNCgl9DQoJdXBkYXRlKCk7DQoJZG9jdW1lbnQub25tb3VzZW1vdmUgPSB1cGRhdGU7DQoJZG9j
dW1lbnQub25tb3VzZXVwID0gbnVsbDsNCglkb2N1bWVudC5vbm1vdXNlZG93biA9IG51bGw7ICAg
Ly8gcmUtZW5hYmxlcyB0ZXh0IHNlbGVjdGlvbiBvbiBOUw0KDQp9DQoNCmZ1bmN0aW9uIHVwZGF0
ZShlKQ0Kew0KCSAgZ2V0TW91c2VYWShlKTsgLy8gTlMgaXMgcGFzc2luZyAoZXZlbnQpLCB3aGls
ZSBJRSBpcyBwYXNzaW5nIChudWxsKQkNCn0NCg0KPC9zY3JpcHQ+DQoNCg0KDQoNCjwvaGVhZD4N
Cg0KPGJvZHkgIG9ubG9hZD0iaW5pdCgpOyByZWNhbGxJbWFnZSgpOyI+DQoNCjxkaXYgc3R5bGU9
InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDoxMnB4OyB0b3A6MTZweDsiPg0KCTxpbWcgc3JjPSIk
e29zY2FyX2ltYWdlX3BhdGh9QnJlYXN0SW1hZ2luZ1N0YW5kYXJkLnBuZyIgd2lkdGggPSI3MDBw
eCI+DQo8L2Rpdj4NCg0KPCEtLSBZb3UgY2FuIHJlbW92ZSAke29zY2FyX2ltYWdlX3BhdGh9IGFz
IHlvdSBkZXZlbG9wIHRoZSBmb3JtLCBidXQgbWFrZSBzdXJlIHlvdSBwdXQgaXQgYmFjayBiZWZv
cmUgDQoNCnVwbG9hZGluZyB0byBPU0NBUiBvdGhlcndpc2UgdGhlIGltYWdlIHdvdWxkbid0IHNo
b3cuIC0tPg0KPCEtLSBBbHNvIG5vdGU6IHRoZSBpbWFnZSBmaWxlbmFtZSBJUyBDQVNFIFNFTlNJ
VElWRSBJTkNMVURJTkcgVEhFIEVYVEVOU0lPTi4gSXQgbWF5IHdvcmsgb3RoZXJ3aXNlIGluIA0K
DQpXaW5kb3dzLCBidXQgbm90IGluIE9TQ0FSIGJlY2F1c2UgaXQncyBiYXNlZCBvbiBhIExpbnV4
IHBsYXRmb3JtIC0tPg0KDQoNCjxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIiIG5hbWU9IkJy
ZWFzdEltYWdpbmdGb3JtIiBpZD0iQnJlYXN0SW1hZ2luZ0Zvcm0iPg0KPCEtLSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tQWxsIHRleHRmaWVsZHMvY2hlY2tib3hlcy90ZXh0YXJlYXMgZ28g
aGVyZS4uLi0tLS0tLSAtLT4NCg0KDQo8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxl
ZnQ6IDUwMHB4OyB0b3A6IDBweDsiPiANCgk8aW5wdXQgbmFtZT0iQ2xpbmljTmFtZSIgdHlwZT0i
dGV4dCIgY2xhc3M9Im5vYm9yZGVyIiBzdHlsZT0id2lkdGg6IDIwMHB4OyBmb250LWZhbWlseTog
QXJpYWw7IGZvbnQtc2l6ZTogMTJweDtmb250LXdlaWdodDogYm9sZDsgdGV4dC1hbGlnbjogY2Vu
dGVyOyIgb3NjYXJkYj1jbGluaWNfbmFtZSA+DQo8L2Rpdj4NCg0KPCEtLSBCaWxsYWJsZSB0byAt
LT4NCjxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMThweDsgdG9wOiAxNTBw
eDsiPg0KCTxpbnB1dCBuYW1lPSJCaWxsVG9NU1AiIHR5cGU9ImNoZWNrYm94IiAgY2xhc3M9Im5v
Ym9yZGVyIj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA2
NXB4OyB0b3A6IDE1MHB4OyI+DQoJPGlucHV0IG5hbWU9IkJpbGxUb0lDQkMiIHR5cGU9ImNoZWNr
Ym94IiAgY2xhc3M9Im5vYm9yZGVyIj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0icG9zaXRpb246IGFi
c29sdXRlOyBsZWZ0OiAxMTZweDsgdG9wOiAxNTBweDsiPg0KCTxpbnB1dCBuYW1lPSJCaWxsVG9X
Q0IiIHR5cGU9ImNoZWNrYm94IiAgY2xhc3M9Im5vYm9yZGVyIj4NCjwvZGl2Pg0KPGRpdiBzdHls
ZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAxNjVweDsgdG9wOiAxNTBweDsiPg0KCTxpbnB1
dCBuYW1lPSJCaWxsVG9QYXRpZW50IiB0eXBlPSJjaGVja2JveCIgIGNsYXNzPSJub2JvcmRlciI+
DQo8L2Rpdj4NCjxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMjIzcHg7IHRv
cDogMTUwcHg7Ij4NCgk8aW5wdXQgbmFtZT0iQmlsbFRvT3RoZXIiIHR5cGU9ImNoZWNrYm94IiAg
Y2xhc3M9Im5vYm9yZGVyIj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyBsZWZ0OiAyNzBweDsgdG9wOiAxNTBweDsiPiANCgk8aW5wdXQgY2xhc3M9Im5vYm9yZGVyIiBu
YW1lPSJCaWxsVG9PdGhlclRleHQiIHN0eWxlPSJ3aWR0aDogMTY1cHg7IGZvbnQtZmFtaWx5OiBB
cmlhbDsgZm9udC1zaXplOiAxMnB4OyIgdHlwZT0idGV4dCI+DQo8L2Rpdj4NCg0KPCEtLSBEZW1v
Z3JhcGhpY3MgLS0+DQo8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDI4MHB4
OyB0b3A6IDE4MHB4OyI+IA0KCTxpbnB1dCBuYW1lPSJEYXRlT2ZCaXJ0aCIgdHlwZT0idGV4dCIg
Y2xhc3M9Im5vYm9yZGVyIiBzdHlsZT0id2lkdGg6IDE1NXB4OyBmb250LWZhbWlseTogQXJpYWw7
IGZvbnQtc2l6ZTogMTJweDsgdGV4dC1hbGlnbjogY2VudGVyOyBiYWNrZ3JvdW5kOiB3aGl0ZTsi
IG9zY2FyZGI9ZG9iID4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBs
ZWZ0OiAyMHB4OyB0b3A6IDE4MHB4OyI+IA0KCTxpbnB1dCBuYW1lPSJNU1AvUEhOIyIgdHlwZT0i
dGV4dCIgY2xhc3M9Im5vYm9yZGVyIiBzdHlsZT0id2lkdGg6IDI1MHB4OyBmb250LWZhbWlseTog
QXJpYWw7IGZvbnQtc2l6ZTogMTJweDsgdGV4dC1hbGlnbjogY2VudGVyOyIgb3NjYXJkYj1ISU4+
DQo8L2Rpdj4NCjxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMjBweDsgdG9w
OiAyMTBweDsiPiANCgk8aW5wdXQgbmFtZT0iUGF0aWVudFN1cm5hbWUsRmlyc3ROYW1lIiB0eXBl
PSJ0ZXh0IiBjbGFzcz0ibm9ib3JkZXIiIHN0eWxlPSJ3aWR0aDogNDE1cHg7IGZvbnQtZmFtaWx5
OiBBcmlhbDsgZm9udC1zaXplOiAxMnB4OyIgb3NjYXJEQj1wYXRpZW50X25hbWUgPg0KPC9kaXY+
DQo8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDIwcHg7IHRvcDogMjM4cHg7
Ij4gDQoJPGlucHV0IG5hbWU9IlBhdGllbnRIb21lUGhvbmUiIHR5cGU9InRleHQiIGNsYXNzPSJu
b2JvcmRlciIgc3R5bGU9IndpZHRoOiAyNTBweDsgZm9udC1mYW1pbHk6IEFyaWFsOyBmb250LXNp
emU6IDEycHg7IHRleHQtYWxpZ246IGNlbnRlcjsiIG9zY2FyZGI9cGhvbmU+DQo8L2Rpdj4NCjxk
aXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMjc5cHg7IHRvcDogMjM4cHg7Ij4g
DQoJPGlucHV0IG5hbWU9IlBhdGllbnRTZXgiIHR5cGU9InRleHQiIGNsYXNzPSJub2JvcmRlciIg
c3R5bGU9IndpZHRoOiA3NXB4OyBmb250LWZhbWlseTogQXJpYWw7IGZvbnQtc2l6ZTogMTJweDsg
dGV4dC1hbGlnbjogY2VudGVyOyBiYWNrZ3JvdW5kOiB3aGl0ZTsiIG9zY2FyZGI9c2V4ID4NCjwv
ZGl2Pg0KPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAzNTdweDsgdG9wOiAy
MzdweDsiPg0KCTxpbnB1dCBuYW1lPSJQcmVnbmFudFllcyIgdHlwZT0iY2hlY2tib3giPg0KPC9k
aXY+DQo8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDM5OHB4OyB0b3A6IDIz
N3B4OyI+DQoJPGlucHV0IG5hbWU9IlByZWduYW50Tm8iIHR5cGU9ImNoZWNrYm94IiBjaGVja2Vk
Pg0KPC9kaXY+DQoNCjxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMjBweDsg
dG9wOiAyNjhweDsiPiANCgk8aW5wdXQgbmFtZT0iUGF0aWVudF8xX0xpbmVfQWRkcmVzcyIgdHlw
ZT0idGV4dCIgY2xhc3M9Im5vYm9yZGVyIiBzdHlsZT0id2lkdGg6IDQxNXB4OyBmb250LWZhbWls
eTogQXJpYWw7IGZvbnQtc2l6ZTogMTJweDsiIG9zY2FyZGI9YWRkcmVzc0xpbmUgPg0KPC9kaXY+
DQoNCjwhLS0gUGh5c2ljYW4gSW5mbyAtLT4NCjxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0
ZTsgbGVmdDogNDQxcHg7IHRvcDogMTUwcHg7Ij4gDQoJPGlucHV0IG5hbWU9IlBhdGllbnRzRG9j
dG9yIiB0eXBlPSJ0ZXh0IiBjbGFzcz0ibm9ib3JkZXIiIHN0eWxlPSJ3aWR0aDogMjY1cHg7IGZv
bnQtZmFtaWx5OiBBcmlhbDsgZm9udC1zaXplOiAxMnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IiAg
b3NjYXJkYj1kb2N0b3IgPg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7
IGxlZnQ6NDQxcHg7IHRvcDoxNzBweDsiPg0KCTx0ZXh0YXJlYSBuYW1lPSJDbGluaWNMYWJlbCIg
Y2xhc3M9Im5vYm9yZGVyIiBzdHlsZT0iaGVpZ2h0OiA4MDsgd2lkdGg6IDI2NTsgZm9udC1mYW1p
bHk6IEFyaWFsOyBmb250LXNpemU6IDEycHgiIG9zY2FyREI9Y2xpbmljX2xhYmVsPjwvdGV4dGFy
ZWE+DQo8L2Rpdj4NCg0KDQo8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDQ0
MXB4OyB0b3A6IDI2OHB4OyI+IA0KCTxpbnB1dCBjbGFzcz0ibm9ib3JkZXIiIG5hbWU9IkNDIiBz
dHlsZT0id2lkdGg6IDI2NXB4OyBmb250LWZhbWlseTogQXJpYWw7IGZvbnQtc2l6ZTogMTJweDsg
dGV4dC1hbGlnbjogY2VudGVyOyIgdHlwZT0idGV4dCI+DQo8L2Rpdj4NCg0KPCEtLSBJbWFnaW5n
IHJlcXVlc3RlZCAtLT4NCjxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMjA2
cHg7IHRvcDogMzAwcHg7Ij4NCgk8aW5wdXQgbmFtZT0iTWFtbW9ncmFwaHkiIHR5cGU9ImNoZWNr
Ym94Ij4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OjQxMnB4
OyB0b3A6MzAwcHg7Ij4NCgk8aW5wdXQgbmFtZT0iQnJlYXN0VWx0cmFzb3VuZCIgdHlwZT0iY2hl
Y2tib3giPg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDIy
MnB4OyB0b3A6IDMyMnB4OyI+DQoJPGlucHV0IG5hbWU9IlByb2NlZWRUb0Z1cnRoZXJJbWFnaW5n
SWZJbmRpY2F0ZWQiIHR5cGU9ImNoZWNrYm94Ij4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0icG9zaXRp
b246IGFic29sdXRlOyBsZWZ0OiAyMjJweDsgdG9wOiAzNDBweDsiPg0KCTxpbnB1dCBuYW1lPSJB
cnJhbmdlTmVlZGxlQmlvcHN5SWZJbmRpY2F0ZWQiIHR5cGU9ImNoZWNrYm94Ij4NCjwvZGl2Pg0K
PGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAyMjJweDsgdG9wOiAzNzRweDsi
Pg0KCTxpbnB1dCBuYW1lPSJDYWxsTWVJZkZ1dGhlckludmVzdGlnYXRpb25Jc05lY2Vzc2FyeSIg
dHlwZT0iY2hlY2tib3giPg0KPC9kaXY+DQoNCjwhLS0gSGlzdG9yeSAtLT4NCjxkaXYgc3R5bGU9
InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMzVweDsgdG9wOiA0MjBweDsiPg0KCTxpbnB1dCBu
YW1lPSJQcmV2TWFtbW9ZZXMiIHR5cGU9ImNoZWNrYm94Ij4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0i
cG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA4M3B4OyB0b3A6IDQyMHB4OyI+DQoJPGlucHV0IG5h
bWU9IlByZXZNYW1tb05vIiB0eXBlPSJjaGVja2JveCI+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9InBv
c2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMTY3cHg7IHRvcDogNDIwcHg7Ij4gDQoJPGlucHV0IGNs
YXNzPSJub2JvcmRlciIgbmFtZT0iUHJldk1hbW1vRGF0ZSIgc3R5bGU9IndpZHRoOiA1NDBweDsg
Zm9udC1mYW1pbHk6IEFyaWFsOyBmb250LXNpemU6IDEycHg7IHRleHQtYWxpZ246IGNlbnRlcjsi
ICB0eXBlPSJ0ZXh0Ij4NCjwvZGl2Pg0KDQo8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7
IGxlZnQ6IDM1cHg7IHRvcDogNDUwcHg7Ij4NCgk8aW5wdXQgbmFtZT0iUHJldkJ4U3VyZ1llcyIg
dHlwZT0iY2hlY2tib3giPg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7
IGxlZnQ6IDgzcHg7IHRvcDogNDUwcHg7Ij4NCgk8aW5wdXQgbmFtZT0iUHJldkJ4U3VyZ05vIiB0
eXBlPSJjaGVja2JveCI+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsg
bGVmdDogMTY3cHg7IHRvcDogNDUwcHg7Ij4gDQoJPGlucHV0IGNsYXNzPSJub2JvcmRlciIgbmFt
ZT0iUHJldkJ4U3VyZyIgc3R5bGU9IndpZHRoOiA1NDBweDsgZm9udC1mYW1pbHk6IEFyaWFsOyBm
b250LXNpemU6IDEycHg7IHRleHQtYWxpZ246IGNlbnRlcjsiICB0eXBlPSJ0ZXh0Ij4NCjwvZGl2
Pg0KDQo8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDM1cHg7IHRvcDogNDc5
cHg7Ij4NCgk8aW5wdXQgbmFtZT0iSG9ybW9uZVRoZXJhcHlZZXMiIHR5cGU9ImNoZWNrYm94Ij4N
CjwvZGl2Pg0KPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA4M3B4OyB0b3A6
IDQ3OXB4OyI+DQoJPGlucHV0IG5hbWU9Ikhvcm1vbmVUaGVyYXB5Tm8iIHR5cGU9ImNoZWNrYm94
Ij4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAxNjdweDsg
dG9wOiA0NzlweDsiPiANCgk8aW5wdXQgY2xhc3M9Im5vYm9yZGVyIiBuYW1lPSJIb3Jtb25lVGhl
cmFweURhdGUiIHN0eWxlPSJ3aWR0aDogNTQwcHg7IGZvbnQtZmFtaWx5OiBBcmlhbDsgZm9udC1z
aXplOiAxMnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IiAgdHlwZT0idGV4dCI+DQo8L2Rpdj4NCg0K
PGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAzNXB4OyB0b3A6IDUwOHB4OyI+
DQoJPGlucHV0IG5hbWU9IkZIeEJyZWFzdENhWWVzIiB0eXBlPSJjaGVja2JveCI+DQo8L2Rpdj4N
CjxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogODNweDsgdG9wOiA1MDhweDsi
Pg0KCTxpbnB1dCBuYW1lPSJGSHhCcmVhc3RDYU5vIiB0eXBlPSJjaGVja2JveCI+DQo8L2Rpdj4N
Cg0KPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAxNjdweDsgdG9wOiA1MDhw
eDsiPiANCgk8aW5wdXQgY2xhc3M9Im5vYm9yZGVyIiBuYW1lPSJGSHhCcmVhc3RDYVJlbGF0aW9u
c2hpcCIgc3R5bGU9IndpZHRoOiA1NDBweDsgZm9udC1mYW1pbHk6IEFyaWFsOyBmb250LXNpemU6
IDEycHg7IHRleHQtYWxpZ246IGNlbnRlcjsiICB0eXBlPSJ0ZXh0Ij4NCjwvZGl2Pg0KDQo8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6MTY3cHg7IHRvcDogNTM2cHg7Ij4gDQoJ
PGlucHV0IGNsYXNzPSJub2JvcmRlciIgbmFtZT0iTE1QIiBzdHlsZT0id2lkdGg6IDIwMHB4OyBm
b250LWZhbWlseTogQXJpYWw7IGZvbnQtc2l6ZTogMTJweDsgdGV4dC1hbGlnbjogY2VudGVyOyIg
IHR5cGU9InRleHQiPg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxl
ZnQ6NTIwcHg7IHRvcDogNTM2cHg7Ij4gDQoJPGlucHV0IGNsYXNzPSJub2JvcmRlciIgbmFtZT0i
TWVub3BhdXNlQWdlIiBzdHlsZT0id2lkdGg6IDE1MHB4OyBmb250LWZhbWlseTogQXJpYWw7IGZv
bnQtc2l6ZTogMTJweDsgdGV4dC1hbGlnbjogY2VudGVyOyIgIHR5cGU9InRleHQiPg0KPC9kaXY+
DQoNCg0KPCEtLSBQcmVzZW50IENvbXBsYWludCAtLT4NCjxkaXYgc3R5bGU9InBvc2l0aW9uOiBh
YnNvbHV0ZTsgbGVmdDogMzRweDsgdG9wOiA1OTRweDsiPg0KCTxpbnB1dCBuYW1lPSJMdW1wIiB0
eXBlPSJjaGVja2JveCI+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsg
bGVmdDogMjEycHg7IHRvcDogNTk0cHg7Ij4NCgk8aW5wdXQgbmFtZT0iVGhpY2tlbmluZyIgdHlw
ZT0iY2hlY2tib3giPg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxl
ZnQ6IDM4MHB4OyB0b3A6IDU5NHB4OyI+DQoJPGlucHV0IG5hbWU9IkxvY2FsaXplZFBhaW4iIHR5
cGU9ImNoZWNrYm94Ij4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBs
ZWZ0OiA1MjhweDsgdG9wOiA1OTRweDsiPg0KCTxpbnB1dCBuYW1lPSJOaXBwbGVEaXNjaGFyZ2Ui
IHR5cGU9ImNoZWNrYm94Ij4NCjwvZGl2Pg0KDQo8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1
dGU7IGxlZnQ6IDM0cHg7IHRvcDogNjE0cHg7Ij4NCgk8aW5wdXQgbmFtZT0iQWJub3JtU2NyZWVu
aW5nTWFtbW8iIHR5cGU9ImNoZWNrYm94Ij4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0icG9zaXRpb246
IGFic29sdXRlOyBsZWZ0OiAzODBweDsgdG9wOiA2MTRweDsiPg0KCTxpbnB1dCBuYW1lPSJQcmV2
QnJlYXN0Q2EiIHR5cGU9ImNoZWNrYm94Ij4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0icG9zaXRpb246
IGFic29sdXRlOyBsZWZ0OiAyMTJweDsgdG9wOiA2MTRweDsiPg0KCTxpbnB1dCBuYW1lPSJGb2xs
b3dVcFByZXZGaW5kaW5ncyIgdHlwZT0iY2hlY2tib3giPg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDUyOHB4OyB0b3A6IDYxNHB4OyI+DQoJPGlucHV0IG5h
bWU9IkJyZWFzdFByb3N0aGVzaXMiIHR5cGU9ImNoZWNrYm94Ij4NCjwvZGl2Pg0KPGRpdiBzdHls
ZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAzNHB4OyB0b3A6IDY0MXB4OyI+DQoJPGlucHV0
IG5hbWU9Ik90aGVyIiB0eXBlPSJjaGVja2JveCI+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9InBvc2l0
aW9uOiBhYnNvbHV0ZTsgbGVmdDogMTI2cHg7IHRvcDogNjQzcHg7Ij4gDQoJPGlucHV0IGNsYXNz
PSJub2JvcmRlciIgbmFtZT0iT3RoZXJUZXh0IiBzdHlsZT0id2lkdGg6IDU4MHB4OyBmb250LWZh
bWlseTogQXJpYWw7IGZvbnQtc2l6ZTogMTJweDsgdGV4dC1hbGlnbjogY2VudGVyOyIgIHR5cGU9
InRleHQiPg0KPC9kaXY+DQo8IS0tIEFyZWEgb2YgQ29uY2VybiAtLT4NCjxkaXYgY2xhc3M9Im5v
Ym9yZGVyIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAxN3B4OyB0b3A6ODY1cHg7
Ij4NCgk8dGV4dGFyZWEgbmFtZT0iQXJlYU9mQ29uY2VyblRleHQiIGNsYXNzPSJub2JvcmRlciIg
c3R5bGU9IndpZHRoOjQ4MDsgaGVpZ2h0OjQwOyBvdmVyZmxvdzogaGlkZGVuOyBmb250LXNpemU6
IDEwOyBmb250LWZhbWlseTogQXJpYWw7IiB3cmFwPSJ2aXJ0dWFsIj48L3RleHRhcmVhPg0KPC9k
aXY+DQoNCg0KDQo8IS0tIFNpZ24gT2ZmIC0tPg0KPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29s
dXRlOyBsZWZ0OiAyNXB4OyB0b3A6IDkyMnB4OyI+IA0KCTxpbnB1dCBjbGFzcz0ibm9ib3JkZXIi
IG5hbWU9IlRlbGVwaG9uZVJlcXVpc3Rpb25UaW1lIiBzdHlsZT0id2lkdGg6IDExMHB4OyBmb250
LWZhbWlseTogQXJpYWw7IGZvbnQtc2l6ZTogMTJweDsgdGV4dC1hbGlnbjogY2VudGVyOyIgIHR5
cGU9InRleHQiPg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6
IDE0MHB4OyB0b3A6IDkyMnB4OyI+IA0KCTxpbnB1dCBjbGFzcz0ibm9ib3JkZXIiIG5hbWU9Iklu
aXRpYWxzT2ZSZWNvcmRlciIgc3R5bGU9IndpZHRoOiAxMDBweDsgZm9udC1mYW1pbHk6IEFyaWFs
OyBmb250LXNpemU6IDEycHg7IHRleHQtYWxpZ246IGNlbnRlcjsiICB0eXBlPSJ0ZXh0Ij4NCjwv
ZGl2Pg0KPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAyNDdweDsgdG9wOiA5
MjJweDsiPiANCgk8aW5wdXQgbmFtZT0iVG9kYXlzRGF0ZSIgY2xhc3M9Im5vYm9yZGVyIiAgb3Nj
YXJkYj10b2RheSBzdHlsZT0id2lkdGg6IDI1MHB4OyBmb250LWZhbWlseTogQXJpYWw7IGZvbnQt
c2l6ZTogMTJweDsgdGV4dC1hbGlnbjogY2VudGVyOyIgIHR5cGU9InRleHQiPg0KPC9kaXY+DQo8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDUwN3B4OyB0b3A6IDg4OXB4OyBm
b250LXNpemU6MTJweDsgZm9udC13ZWlnaHQ6IGJvbGQ7ICI+DQoJIkVsZWN0cm9uaWNhbGx5IHNp
Z25lZCINCjwvZGl2Pg0KDQo8IS0tIC0tLS0tLS0tLS0tLS0tLS0tSGlkZGVuIGlucHV0IGZvciBz
dG9yaW5nIEltYWdlIGRhdGEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPg0K
PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iSW1hZ2VEYXRhIj4NCg0KDQo8IS0tIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLVRoZSBzdWJtaXQvcHJpbnQvcmVzZXQgYnV0dG9ucyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4NCjxkaXYgY2xhc3M9IkRvTm90UHJpbnQiIHN0eWxl
PSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwMHB4OyBsZWZ0OiA0MXB4OyI+DQo8dGFibGU+
DQoJPHRyPg0KCQk8dGQ+DQoJCQlTdWJqZWN0OiA8aW5wdXQgbmFtZT0ic3ViamVjdCIgc2l6ZT0i
NDAiIHR5cGU9InRleHQiPg0KCQkJPGlucHV0IHZhbHVlPSJTdWJtaXQiIG5hbWU9IlN1Ym1pdEJ1
dHRvbiIgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJzdWJtaXRJbWFnZSgpOyBkb2N1bWVudC5CcmVh
c3RJbWFnaW5nRm9ybS5zdWJtaXQoKSI+DQoJCQk8aW5wdXQgdmFsdWU9IlJlc2V0IiBuYW1lPSJS
ZXNldEJ1dHRvbiIgdHlwZT0icmVzZXQiPg0KCQkJPGlucHV0IHZhbHVlPSJQcmludCIgIG5hbWU9
IlByaW50QnV0dG9uIiBvbmNsaWNrPSJ3aW5kb3cucHJpbnQoKSIgdHlwZT0iYnV0dG9uIj4NCgkJ
PC90ZD4NCgk8L3RyPg0KPC90YWJsZT4NCjwvZGl2Pg0KPC9mb3JtPg0KPCEtLSAtLS0tLS1FbmQg
b2Ygc3VibWl0L3ByaW50L3Jlc2V0IGJ1dHRvbnMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4NCg0KDQoNCjwhLS0gIERyYXdpbmcgY29kZTogc3Rh
cnQgLS0+DQoNCjxkaXYgaWQ9Im15Q2FudmFzIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IGxl
ZnQ6IDYwcHg7IHRvcDo3MDBweDsgd2lkdGg6IDU3MHB4OyBoZWlnaHQ6IDE2MHB4OyIgIA0KDQpv
bm1vdXNlZG93bj0iU2V0U3RhcnQoKTsiIG9ubW91c2V1cD0iRHJhd01hcmtlcigpOyIgb25tb3Vz
ZW1vdmU9IlRyYWNrKCk7IiBvbm1vdXNlb3Zlcj0iU2V0RHJhd0NpcmNsZU9uKCk7IiBvbm1vdXNl
b3V0PSJTZXREcmF3Q2lyY2xlT2ZmKCk7Ij4NCjwvZGl2Pg0KDQo8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogYWJzb2x1dGU7IGxlZnQ6MzQ1cHg7IHRvcDo2NzVweDsiIGNsYXNzPSJEb05vdFByaW50Ij4N
CltjbGljayBpbiB0aGUgY2VudGVyIG9mIGxlc2lvbiBhbmQgZHJhZyBvdXQgdGhlIHJhZGl1c108
aW5wdXQgaWQ9IkNsZWFyQnV0dG9uIiB0eXBlPSJidXR0b24iIG9uY2xpY2s9IkNsZWFyKCk7IiB2
YWx1ZT0iQ2xlYXIiPg0KPC9kaXY+DQoNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4N
Cg0KdmFyIGNudiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJteUNhbnZhcyIpOyANCnZhciBq
ZyA9IG5ldyBqc0dyYXBoaWNzKGNudik7DQp2YXIgY252TGVmdCA9IHBhcnNlSW50KGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdteUNhbnZhcycpLnN0eWxlLmxlZnQpOw0KdmFyIGNudlRvcCA9IHBh
cnNlSW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteUNhbnZhcycpLnN0eWxlLnRvcCk7IA0K
dmFyIHggPSAwOw0KdmFyIHkgPSAwOw0KdmFyIGFsbG93RHJhdyA9IGZhbHNlOw0KdmFyIERyYXdD
aXJjbGUgPSBmYWxzZTsNCnZhciBDaXJjbGVEYXRhPSBuZXcgQXJyYXkoKTsNCnZhciBTdHJva2VD
b2xvciA9ICIjMDAwMGZmIjsNCnZhciBTdHJva2VUaGlja25lc3MgPSAyOw0KDQpmdW5jdGlvbiBT
ZXREcmF3Q2lyY2xlT24oKQ0Kew0KCURyYXdDaXJjbGUgPSB0cnVlOw0KfQ0KZnVuY3Rpb24gU2V0
RHJhd0NpcmNsZU9mZigpDQp7DQoJRHJhd0NpcmNsZSA9IGZhbHNlOw0KfQ0KDQoNCmZ1bmN0aW9u
IENsZWFyKCkNCnsNCglqZy5jbGVhcigpOw0KCUNpcmNsZURhdGEgPSBuZXcgQXJyYXkoKTsNCglk
b2N1bWVudC5CcmVhc3RJbWFnaW5nRm9ybS5JbWFnZURhdGEudmFsdWUgPSAiIjsNCn0NCg0KZnVu
Y3Rpb24gU2V0U3RhcnQoKQ0Kew0KCXgwID0gbW91c2V4IC0gY252TGVmdDsNCgl5MD0gbW91c2V5
IC0gY252VG9wOw0KfQ0KDQpmdW5jdGlvbiBUcmFjaygpDQp7DQoJLy8gdGhpcyBpcyBjYWxsIGV2
ZXJ5IHRpbWUgdGhlIG1vdXNlIG1vdmUuDQp9DQoNCmZ1bmN0aW9uIERyYXdNYXJrZXIoKQ0Kew0K
CWpnLnNldFByaW50YWJsZSh0cnVlKTsNCglqZy5zZXRDb2xvcihTdHJva2VDb2xvcik7IC8vIHNl
dCBzdHJva2UgY29sb3VyDQoJamcuc2V0U3Ryb2tlKFN0cm9rZVRoaWNrbmVzcyk7IC8vIHNldCBz
dHJva2UgdGhpY2tuZXNzDQoJdmFyIHgyID0gKG1vdXNleCAtIGNudkxlZnQpOw0KCXZhciB5MiA9
IChtb3VzZXkgLSBjbnZUb3ApOw0KCXZhciB4ZCA9IHgyIC0geDA7DQoJdmFyIHlkID0geTIgLSB5
MDsNCglpZiAoRHJhd0NpcmNsZSkNCgl7DQoJCS8vIGRyYXcgY2lyY2xlDQoJCXZhciByMiA9IE1h
dGgucG93KHhkLDIpICsgTWF0aC5wb3coeWQsMik7DQoJCXZhciByID0gTWF0aC5zcXJ0KHIyKTsN
CgkJdmFyIGRpYW1ldGVyID0gcGFyc2VJbnQoMipyKTsNCgkJdmFyIHgxID0gcGFyc2VJbnQoeDAg
LSByKTsNCgkJdmFyIHkxID0gcGFyc2VJbnQoeTAtcik7DQoJCWpnLmZpbGxFbGxpcHNlKHgxLCB5
MSxkaWFtZXRlcixkaWFtZXRlcik7DQoJCWpnLnBhaW50KCk7CQ0KDQoJCS8vc3RvcmUgcGFyYW1l
dGVycyBpbiBhbiBhcnJheSBjYWxsZWQgQ2lyY2xlUGFyYW1ldGVyDQoJCXZhciBDaXJjbGVQYXJh
bWV0ZXIgPSAgeDEgKyAiLCIgKyB5MSArICIsIiArIGRpYW1ldGVyOw0KCQlDaXJjbGVEYXRhLnB1
c2goQ2lyY2xlUGFyYW1ldGVyKTsNCgl9DQp9DQpmdW5jdGlvbiBzdWJtaXRJbWFnZSgpDQp7DQoJ
dmFyIHBhY2tlZCA9ICIiOyAgLy8gSW5pdGlhbGl6ZSBwYWNrZWQgb3Igd2UgZ2V0IHRoZSB3b3Jk
ICd1bmRlZmluZWQnDQoJLy9Db252ZXJ0aW5nIGltYWdlIGRhdGEgaW4gYXJyYXkgaW50byBhIHN0
cmluZw0KCWZvciAoaSA9IDA7IChpIDwgQ2lyY2xlRGF0YS5sZW5ndGgpOyBpKyspDQoJIHsNCgkJ
aWYgKGkgPiAwKSANCgkJew0KCQkJcGFja2VkICs9ICIsIjsgLy8gZWFjaCBzZXQgb2YgZGF0YSBz
ZXBhcmF0ZWQgYnkgY29tbWENCgkJfQ0KCQlwYWNrZWQgKz0gZXNjYXBlKENpcmNsZURhdGFbaV0p
Ow0KCX0NCglkb2N1bWVudC5CcmVhc3RJbWFnaW5nRm9ybS5JbWFnZURhdGEudmFsdWUgPSBwYWNr
ZWQ7ICAvL3N0b3JlcyBpbWFnZSBkYXRhIGludG8gaGlkZGVuIGZvcm0gZmllbGQNCn0NCg0KZnVu
Y3Rpb24gcmVjYWxsSW1hZ2UoKQ0Kew0KDQoJdmFyIHF1ZXJ5ID0gZG9jdW1lbnQuQnJlYXN0SW1h
Z2luZ0Zvcm0uSW1hZ2VEYXRhLnZhbHVlOw0KCXZhciBkYXRhID0gcXVlcnkuc3BsaXQoJywnKTsN
Cglmb3IgKGkgPSAwOyAoaSA8IGRhdGEubGVuZ3RoKTsgaSsrKQ0KCXsNCgkJZGF0YVtpXSA9IHVu
ZXNjYXBlKGRhdGFbaV0pOw0KCX0NCglmb3IgKGk9MDsgKGkgPCBkYXRhLmxlbmd0aCk7IGkrKykN
Cgl7DQoJCXZhciBwYXJhbWV0ZXIgPSBuZXcgQXJyYXkoKTsNCgkJcGFyYW1ldGVyPWRhdGFbaV0u
c3BsaXQoIiwiKTsNCgkJdmFyIHgxID0gcGFyc2VJbnQocGFyYW1ldGVyWzBdKTsNCgkJdmFyIHkx
ID0gcGFyc2VJbnQocGFyYW1ldGVyWzFdKTsNCgkJdmFyIGRpYW1ldGVyID0gcGFyc2VJbnQocGFy
YW1ldGVyWzJdKTsNCg0KCQlqZy5zZXRQcmludGFibGUodHJ1ZSk7DQoJCWpnLnNldENvbG9yKFN0
cm9rZUNvbG9yKTsgLy8gc2V0IHN0cm9rZSBjb2xvdXINCgkJamcuZmlsbEVsbGlwc2UoeDEsIHkx
LCBkaWFtZXRlciwgZGlhbWV0ZXIpOw0KCQlqZy5wYWludCgpOw0KCX0NCn0NCg0KDQoNCg0KPC9z
Y3JpcHQ+DQo8IS0tIERyYXdpbmcgQ29kZTogRW5kIC0tPg0KDQoNCjwvYm9keT48L2h0bWw+ |