{1,
{#base64:LyoqKg0KICogVGV4dGlsZSBwYXJzZXIgZm9yIEphdmFTY3JpcHQNCiAqDQogKiBD

b3B5cmlnaHQgKGMpIDIwMTIgQm9yZ2FyIMOeb3JzdGVpbnNzb24gKE1JVCBMaWNl

bnNlKS4NCiAqDQogKi8NCi8qanNoaW50DQogIGxheGNvbW1hOnRydWUNCiAgbGF4

YnJlYWs6dHJ1ZQ0KICBlcW51bGw6dHJ1ZQ0KICBsb29wZnVuYzp0cnVlDQogIHN1

Yjp0cnVlDQoqLw0KOyhmdW5jdGlvbigpew0KInVzZSBzdHJpY3QiOw0KDQogIC8q

KioNCiAgICogUmVndWxhciBFeHByZXNzaW9uIGhlbHBlciBtZXRob2RzDQogICAq

DQogICAqIFRoaXMgcHJvdmlkZXMgdGhlIGByZWAgb2JqZWN0LCB3aGljaCBjb250

YWlucyBzZXZlcmFsIGhlbHBlcg0KICAgKiBtZXRob2RzIGZvciB3b3JraW5nIHdp

dGggYmlnIHJlZ3VsYXIgZXhwcmVzc2lvbnMgKHNvdXApLg0KICAgKg0KICAgKi8N

CiAgdmFyIHJlID0gew0KICAgIF9jYWNoZToge30NCiAgLCBwYXR0ZXJuOiB7DQog

ICAgICAncHVuY3QnOiAiWyEtLzotQFxcW1xcXFxcXF0tYHstfl0iDQogICAgLCAn

c3BhY2UnOiAnXFxzJw0KICAgIH0NCiAgLCBlc2NhcGU6IGZ1bmN0aW9uICggc3Jj

ICkgew0KICAgICAgcmV0dXJuIHNyYy5yZXBsYWNlKCAvW1wtXFtcXVx7XH1cKFwp

XCpcK1w/XC5cLFxcXF5cJFx8XCNcc10vZywgIlxcJCYiICk7DQogICAgfQ0KICAs

IGNvbGxhcHNlOiBmdW5jdGlvbiAoIHNyYyApIHsNCiAgICAgIHJldHVybiBzcmMu

cmVwbGFjZSggLyg/OiMuKj8oPzpcbnwkKSkvZywgJycgKQ0KICAgICAgICAgICAg

ICAgIC5yZXBsYWNlKCAvXHMrL2csICcnICkNCiAgICAgICAgICAgICAgICA7DQog

ICAgfQ0KICAsIGV4cGFuZF9wYXR0ZXJuczogZnVuY3Rpb24gKCBzcmMgKSB7DQog

ICAgICAvLyBUT0RPOiBwcm92aWRlIGVzY2FwZSBmb3IgcGF0dGVybnM6IFxbOnBh

dHRlcm46XSA/DQogICAgICByZXR1cm4gc3JjLnJlcGxhY2UoIC9cW1w6XHMqKFx3

KylccypcOlxdL2csIGZ1bmN0aW9uICggbSwgayApIHsNCiAgICAgICAgICByZXR1

cm4gKCBrIGluIHJlLnBhdHRlcm4gKQ0KICAgICAgICAgICAgICA/IHJlLmV4cGFu

ZF9wYXR0ZXJucyggcmUucGF0dGVyblsgayBdICkNCiAgICAgICAgICAgICAgOiBr

DQogICAgICAgICAgICAgIDsNCiAgICAgICAgfSkNCiAgICAgICAgOw0KICAgIH0N

CiAgLCBpc1JlZ0V4cDogZnVuY3Rpb24gKCByICkgew0KICAgICAgcmV0dXJuIE9i

amVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCggciApID09PSAiW29iamVjdCBS

ZWdFeHBdIjsNCiAgICB9DQogICwgY29tcGlsZTogZnVuY3Rpb24gKCBzcmMsIGZs

YWdzICkgew0KICAgICAgaWYgKCByZS5pc1JlZ0V4cCggc3JjICkgKSB7DQogICAg

ICAgIGlmICggYXJndW1lbnRzLmxlbmd0aCA9PT0gMSApIHsgLy8gbm8gZmxhZ3Mg

YXJnIHByb3ZpZGVkLCB1c2UgdGhlIFJlZ0V4cCBvbmUNCiAgICAgICAgICBmbGFn

cyA9ICggc3JjLmdsb2JhbCAgICAgPyAnZycgOiAnJyApICsNCiAgICAgICAgICAg

ICAgICAgICggc3JjLmlnbm9yZUNhc2UgPyAnaScgOiAnJyApICsNCiAgICAgICAg

ICAgICAgICAgICggc3JjLm11bHRpbGluZSAgPyAnbScgOiAnJyApOw0KICAgICAg

ICB9DQogICAgICAgIHNyYyA9IHNyYy5zb3VyY2U7DQogICAgICB9DQogICAgICAv

LyBkb24ndCBkbyB0aGUgc2FtZSB0aGluZyB0d2ljZQ0KICAgICAgdmFyIGNrZXkg

PSBzcmMgKyAoIGZsYWdzIHx8ICcnICk7DQogICAgICBpZiAoIGNrZXkgaW4gcmUu

X2NhY2hlICkgeyByZXR1cm4gcmUuX2NhY2hlWyBja2V5IF07IH0NCiAgICAgIC8v

IGFsbG93IGNsYXNzZXMNCiAgICAgIHZhciByeCA9IHJlLmV4cGFuZF9wYXR0ZXJu

cyggc3JjICk7DQogICAgICAvLyBhbGxvdyB2ZXJib3NlIGV4cHJlc3Npb25zDQog

ICAgICBpZiAoIGZsYWdzICYmIC94Ly50ZXN0KCBmbGFncyApICkgew0KICAgICAg

ICByeCA9IHJlLmNvbGxhcHNlKCByeCApOw0KICAgICAgfQ0KICAgICAgLy8gYWxs

b3cgZG90YWxsIGV4cHJlc3Npb25zDQogICAgICBpZiAoIGZsYWdzICYmIC9zLy50

ZXN0KCBmbGFncyApICkgew0KICAgICAgICByeCA9IHJ4LnJlcGxhY2UoIC8oW15c

XF0pXC4vZywgJyQxW15cXDBdJyApOw0KICAgICAgfQ0KICAgICAgLy8gVE9ETzog

dGVzdCBpZiBNU0lFIGFuZCBhZGQgcmVwbGFjZSBccyB3aXRoIFtcc1x1MDBhMF0g

aWYgaXQgaXM/DQogICAgICAvLyBjbGVhbiBmbGFncyBhbmQgb3V0cHV0IG5ldyBy

ZWdleHANCiAgICAgIGZsYWdzID0gKCBmbGFncyB8fCAnJyApLnJlcGxhY2UoIC9b

XmdpbV0vZywgJycgKTsNCiAgICAgIHJldHVybiAoIHJlLl9jYWNoZVsgY2tleSBd

ID0gbmV3IFJlZ0V4cCggcngsIGZsYWdzICkgKTsNCiAgICB9DQogIH07DQoNCg0K

DQoNCiAgLyoqKg0KICAgKiBKU09OTUwgaGVscGVyIG1ldGhvZHMgLSBodHRwOi8v

d3d3Lmpzb25tbC5vcmcvDQogICAqDQogICAqIFRoaXMgcHJvdmlkZXMgdGhlIGBK

U09OTUxgIG9iamVjdCwgd2hpY2ggY29udGFpbnMgaGVscGVyDQogICAqIG1ldGhv

ZHMgZm9yIHJlbmRlcmluZyBKU09OTUwgdG8gSFRNTC4NCiAgICoNCiAgICogTm90

ZSB0aGF0IHRoZSB0YWcgISBpcyB0YWtlbiB0byBtZWFuIGNvbW1lbnQsIHRoaXMg

aXMgaG93ZXZlcg0KICAgKiBub3Qgc3BlY2lmaWVkIGluIHRoZSBKU09OTUwgc3Bl

Yy4NCiAgICoNCiAgICovDQogIHZhciBKU09OTUwgPSB7DQogICAgZXNjYXBlOiBm

dW5jdGlvbiAoIHRleHQsIGVzY19xdW90ZXMgKSB7DQogICAgICByZXR1cm4gdGV4

dC5yZXBsYWNlKCAvJig/ISgjXGR7Mix9fCN4W1xkYS1mQS1GXXsyLH18W2EtekEt

Wl1bYS16QS1aMS00XXsxLDZ9KTspL2csICImYW1wOyIgKQ0KICAgICAgICAgICAg

ICAgICAucmVwbGFjZSggLzwvZywgIiZsdDsiICkNCiAgICAgICAgICAgICAgICAg

LnJlcGxhY2UoIC8+L2csICImZ3Q7IiApDQogICAgICAgICAgICAgICAgIC5yZXBs

YWNlKCAvIi9nLCBlc2NfcXVvdGVzID8gIiZxdW90OyIgOiAnIicgKQ0KICAgICAg

ICAgICAgICAgICAucmVwbGFjZSggLycvZywgZXNjX3F1b3RlcyA/ICImIzM5OyIg

IDogIiciICkNCiAgICAgICAgICAgICAgICAgOw0KICAgIH0NCiAgLCB0b0hUTUw6

IGZ1bmN0aW9uICgganNvbm1sICkgew0KDQogICAgICBqc29ubWwgPSBqc29ubWwu

Y29uY2F0KCk7DQoNCiAgICAgIC8vIGJhc2ljIGNhc2UNCiAgICAgIGlmICggdHlw

ZW9mIGpzb25tbCA9PT0gInN0cmluZyIgKSB7DQogICAgICAgIHJldHVybiBKU09O

TUwuZXNjYXBlKCBqc29ubWwgKTsNCiAgICAgIH0NCg0KICAgICAgdmFyIHRhZyA9

IGpzb25tbC5zaGlmdCgpDQogICAgICAgICwgYXR0cmlidXRlcyA9IHt9DQogICAg

ICAgICwgY29udGVudCA9IFtdDQogICAgICAgICwgdGFnX2F0dHJzID0gIiINCiAg

ICAgICAgLCBhDQogICAgICAgIDsNCiAgICAgIGlmICgganNvbm1sLmxlbmd0aCAm

JiB0eXBlb2YganNvbm1sWyAwIF0gPT09ICJvYmplY3QiICYmICFfaXNBcnJheSgg

anNvbm1sWyAwIF0gKSApIHsNCiAgICAgICAgYXR0cmlidXRlcyA9IGpzb25tbC5z

aGlmdCgpOw0KICAgICAgfQ0KDQogICAgICB3aGlsZSAoIGpzb25tbC5sZW5ndGgg

KSB7DQogICAgICAgIGNvbnRlbnQucHVzaCggSlNPTk1MLnRvSFRNTCgganNvbm1s

LnNoaWZ0KCkgKSApOw0KICAgICAgfQ0KDQogICAgICBmb3IgKCBhIGluIGF0dHJp

YnV0ZXMgKSB7DQogICAgICAgIHRhZ19hdHRycyArPSAoIGF0dHJpYnV0ZXNbIGEg

XSA9PSBudWxsICkNCiAgICAgICAgICAgICAgICA/ICIgIiArIGENCiAgICAgICAg

ICAgICAgICA6ICIgIiArIGEgKyAnPSInICsgSlNPTk1MLmVzY2FwZSggU3RyaW5n

KCBhdHRyaWJ1dGVzWyBhIF0gKSwgdHJ1ZSApICsgJyInDQogICAgICAgICAgICAg

ICAgOw0KICAgICAgfQ0KDQogICAgICAvLyBiZSBjYXJlZnVsIGFib3V0IGFkZGlu

ZyB3aGl0ZXNwYWNlIGhlcmUgZm9yIGlubGluZSBlbGVtZW50cw0KICAgICAgaWYg

KCB0YWcgPT0gIiEiICkgew0KICAgICAgICByZXR1cm4gIjwhLS0iICsgY29udGVu

dC5qb2luKCAiIiApICsgIi0tPiI7DQogICAgICB9DQogICAgICBlbHNlIGlmICgg

dGFnIGluIGh0bWxfc2luZ2xldG9ucyApIHsNCiAgICAgICAgcmV0dXJuICI8IiAr

IHRhZyArIHRhZ19hdHRycyArICIgLz4iOw0KICAgICAgfQ0KICAgICAgZWxzZSB7

DQogICAgICAgIHJldHVybiAiPCIgKyB0YWcgKyB0YWdfYXR0cnMgKyAiPiIgKyBj

b250ZW50LmpvaW4oICIiICkgKyAiPC8iICsgdGFnICsgIj4iOw0KICAgICAgfQ0K

ICAgIH0NCiAgfTsNCg0KDQogIC8vIG1lcmdlIG9iamVjdCBiIHByb3BlcnRpZXMg

aW50byBvYmVjdCBhDQogIGZ1bmN0aW9uIG1lcmdlICggYSwgYiApIHsNCiAgICBp

ZiAoIGIgKSB7DQogICAgICBmb3IgKCB2YXIgayBpbiBiICkgew0KICAgICAgICBh

WyBrIF0gPSBiWyBrIF07DQogICAgICB9DQogICAgfQ0KICAgIHJldHVybiBhOw0K

ICB9DQoNCg0KICB2YXIgX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0

aW9uICggYSApIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2Fs

bChhKSA9PT0gJ1tvYmplY3QgQXJyYXldJzsgfTsNCg0KICAvKiBleHByZXNzaW9u

cyAqLw0KICByZS5wYXR0ZXJuWyAnYmxvY2tzJyAgICBdID0gJyg/OmJbcWNdfGRp

dnxub3RleHRpbGV8cHJlfGhbMS02XXxmblxcZCt8cHwjIyMpJzsNCiAgcmUucGF0

dGVyblsgJ3BiYV9jbGFzcycgXSA9ICdcXChbXlxcKV0rXFwpJzsNCiAgcmUucGF0

dGVyblsgJ3BiYV9zdHlsZScgXSA9ICdcXHtbXlxcfV0rXFx9JzsNCiAgcmUucGF0

dGVyblsgJ3BiYV9sYW5nJyAgXSA9ICdcXFtbXlxcW1xcXV0rXFxdJzsNCiAgcmUu

cGF0dGVyblsgJ3BiYV9hbGlnbicgXSA9ICcoPzo8Pnw8fD58PSknOw0KICByZS5w

YXR0ZXJuWyAncGJhX3BhZCcgICBdID0gJ1tcXChcXCldKyc7DQogIHJlLnBhdHRl

cm5bICdwYmFfYXR0cicgIF0gPSAnKD86WzpwYmFfY2xhc3M6XXxbOnBiYV9zdHls

ZTpdfFs6cGJhX2xhbmc6XXxbOnBiYV9hbGlnbjpdfFs6cGJhX3BhZDpdKSonOw0K

ICByZS5wYXR0ZXJuWyAndXJsX3B1bmN0JyBdID0gJ1suLMKrwrvigLPigLnigLoh

P10nOw0KICByZS5wYXR0ZXJuWyAnaHRtbF9pZCcgICBdID0gJ1thLXpBLVpdW2Et

ekEtWlxcZDpdKic7DQogIHJlLnBhdHRlcm5bICdodG1sX2F0dHInIF0gPSAnKD86

IlteIl0rInxcJ1teXCddK1wnfFtePlxcc10rKSc7DQogIHJlLnBhdHRlcm5bICd0

eF91cmxjaCcgIF0gPSAnW1xcdyIkXFwtXy4rISpcJygpLCI7XFwvPzpAPSYlI3t9

fFxcXFxeflxcW1xcXWBdJzsNCiAgcmUucGF0dGVyblsgJ3R4X2NpdGUnICAgXSA9

ICc6KCg/OlteXFxzKCldfFxcKFteXFxzKCldK1xcKXxbKCldKSs/KSg/PVshLVxc

LjotQFxcW1xcXFxcXF0tYHstfl0rKD86JHxcXHMpfCR8XFxzKSc7DQogIHJlLnBh

dHRlcm5bICdsaXN0aGQnICAgIF0gPSAnW1xcdCBdKltcXCNcXCpdKihcXCp8XFwj

KD86X3xcXGQrKT8pWzpwYmFfYXR0cjpdKD86IFxcU3xcXC5cXHMqKD89XFxTfFxc

bikpJzsNCiAgcmUucGF0dGVyblsgJ3VjYXBzJyAgICAgXSA9ICJBLVoiKw0KICAg

ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGF0aW4gZXh0ZW5kZWQgw4At

w54NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwYzAtXHUwMGQ2

XHUwMGQ4LVx1MDBkZSIrDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv

LyBMYXRpbiBjYXBzIHdpdGggZW1iZWxpc2htZW50cyBhbmQgbGlnYXR1cmVzLi4u

DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMTAwXHUwMTAyXHUw

MTA0XHUwMTA2XHUwMTA4XHUwMTBhXHUwMTBjXHUwMTBlXHUwMTEwXHUwMTEyXHUw

MTE0XHUwMTE2XHUwMTE4XHUwMTFhXHUwMTFjXHUwMTFlXHUwMTIwXHUwMTIyXHUw

MTI0XHUwMTI2XHUwMTI4XHUwMTJhXHUwMTJjXHUwMTJlXHUwMTMwXHUwMTMyXHUw

MTM0XHUwMTM2XHUwMTM5XHUwMTNiXHUwMTNkXHUwMTNmIisNCiAgICAgICAgICAg

ICAgICAgICAgICAgICAgICAgICJcdTAxNDFcdTAxNDNcdTAxNDVcdTAxNDdcdTAx

NGFcdTAxNGNcdTAxNGVcdTAxNTBcdTAxNTJcdTAxNTRcdTAxNTZcdTAxNThcdTAx

NWFcdTAxNWNcdTAxNWVcdTAxNjBcdTAxNjJcdTAxNjRcdTAxNjZcdTAxNjhcdTAx

NmFcdTAxNmNcdTAxNmVcdTAxNzBcdTAxNzJcdTAxNzRcdTAxNzZcdTAxNzhcdTAx

NzlcdTAxN2JcdTAxN2QiKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg

Ilx1MDE4MVx1MDE4Mlx1MDE4NFx1MDE4Nlx1MDE4N1x1MDE4OS1cdTAxOGJcdTAx

OGUtXHUwMTkxXHUwMTkzXHUwMTk0XHUwMTk2LVx1MDE5OFx1MDE5Y1x1MDE5ZFx1

MDE5Zlx1MDFhMFx1MDFhMlx1MDFhNFx1MDFhNlx1MDFhN1x1MDFhOVx1MDFhY1x1

MDFhZVx1MDFhZlx1MDFiMS1cdTAxYjNcdTAxYjVcdTAxYjdcdTAxYjhcdTAxYmMi

Kw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDFjNFx1MDFjN1x1

MDFjYVx1MDFjZFx1MDFjZlx1MDFkMVx1MDFkM1x1MDFkNVx1MDFkN1x1MDFkOVx1

MDFkYlx1MDFkZVx1MDFlMFx1MDFlMlx1MDFlNFx1MDFlNlx1MDFlOFx1MDFlYVx1

MDFlY1x1MDFlZVx1MDFmMVx1MDFmNFx1MDFmNi1cdTAxZjhcdTAxZmFcdTAxZmNc

dTAxZmUiKw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDIwMFx1

MDIwMlx1MDIwNFx1MDIwNlx1MDIwOFx1MDIwYVx1MDIwY1x1MDIwZVx1MDIxMFx1

MDIxMlx1MDIxNFx1MDIxNlx1MDIxOFx1MDIxYVx1MDIxY1x1MDIxZVx1MDIyMFx1

MDIyMlx1MDIyNFx1MDIyNlx1MDIyOFx1MDIyYVx1MDIyY1x1MDIyZVx1MDIzMFx1

MDIzMlx1MDIzYVx1MDIzYlx1MDIzZFx1MDIzZSIrDQogICAgICAgICAgICAgICAg

ICAgICAgICAgICAgICAiXHUwMjQxXHUwMjQzLVx1MDI0Nlx1MDI0OFx1MDI0YVx1

MDI0Y1x1MDI0ZSIrDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUx

ZTAwXHUxZTAyXHUxZTA0XHUxZTA2XHUxZTA4XHUxZTBhXHUxZTBjXHUxZTBlXHUx

ZTEwXHUxZTEyXHUxZTE0XHUxZTE2XHUxZTE4XHUxZTFhXHUxZTFjXHUxZTFlXHUx

ZTIwXHUxZTIyXHUxZTI0XHUxZTI2XHUxZTI4XHUxZTJhXHUxZTJjXHUxZTJlXHUx

ZTMwXHUxZTMyXHUxZTM0XHUxZTM2XHUxZTM4XHUxZTNhXHUxZTNjXHUxZTNlXHUx

ZTQwIisNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTFlNDJcdTFl

NDRcdTFlNDZcdTFlNDhcdTFlNGFcdTFlNGNcdTFlNGVcdTFlNTBcdTFlNTJcdTFl

NTRcdTFlNTZcdTFlNThcdTFlNWFcdTFlNWNcdTFlNWVcdTFlNjBcdTFlNjJcdTFl

NjRcdTFlNjZcdTFlNjhcdTFlNmFcdTFlNmNcdTFlNmVcdTFlNzBcdTFlNzJcdTFl

NzRcdTFlNzZcdTFlNzhcdTFlN2FcdTFlN2NcdTFlN2UiKw0KICAgICAgICAgICAg

ICAgICAgICAgICAgICAgICAgIlx1MWU4MFx1MWU4Mlx1MWU4NFx1MWU4Nlx1MWU4

OFx1MWU4YVx1MWU4Y1x1MWU4ZVx1MWU5MFx1MWU5Mlx1MWU5NFx1MWU5ZVx1MWVh

MFx1MWVhMlx1MWVhNFx1MWVhNlx1MWVhOFx1MWVhYVx1MWVhY1x1MWVhZVx1MWVi

MFx1MWViMlx1MWViNFx1MWViNlx1MWViOFx1MWViYVx1MWViY1x1MWViZSIrDQog

ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUxZWMwXHUxZWMyXHUxZWM0

XHUxZWM2XHUxZWM4XHUxZWNhXHUxZWNjXHUxZWNlXHUxZWQwXHUxZWQyXHUxZWQ0

XHUxZWQ2XHUxZWQ4XHUxZWRhXHUxZWRjXHUxZWRlXHUxZWUwXHUxZWUyXHUxZWU0

XHUxZWU2XHUxZWU4XHUxZWVhXHUxZWVjXHUxZWVlXHUxZWYwXHUxZWYyXHUxZWY0

XHUxZWY2XHUxZWY4XHUxZWZhXHUxZWZjXHUxZWZlIisNCiAgICAgICAgICAgICAg

ICAgICAgICAgICAgICAgICJcdTJjNjBcdTJjNjItXHUyYzY0XHUyYzY3XHUyYzY5

XHUyYzZiXHUyYzZkLVx1MmM3MFx1MmM3Mlx1MmM3NVx1MmM3ZVx1MmM3ZiIrDQog

ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVhNzIyXHVhNzI0XHVhNzI2

XHVhNzI4XHVhNzJhXHVhNzJjXHVhNzJlXHVhNzMyXHVhNzM0XHVhNzM2XHVhNzM4

XHVhNzNhXHVhNzNjXHVhNzNlIisNCiAgICAgICAgICAgICAgICAgICAgICAgICAg

ICAgICJcdWE3NDBcdWE3NDJcdWE3NDRcdWE3NDZcdWE3NDhcdWE3NGFcdWE3NGNc

dWE3NGVcdWE3NTBcdWE3NTJcdWE3NTRcdWE3NTZcdWE3NThcdWE3NWFcdWE3NWNc

dWE3NWVcdWE3NjBcdWE3NjJcdWE3NjRcdWE3NjZcdWE3NjhcdWE3NmFcdWE3NmNc

dWE3NmVcdWE3NzlcdWE3N2JcdWE3N2RcdWE3N2UiKw0KICAgICAgICAgICAgICAg

ICAgICAgICAgICAgICAgIlx1YTc4MFx1YTc4Mlx1YTc4NFx1YTc4Nlx1YTc4Ylx1

YTc4ZFx1YTc5MFx1YTc5Mlx1YTdhMFx1YTdhMlx1YTdhNFx1YTdhNlx1YTdhOFx1

YTdhYSI7DQoNCiAgdmFyIHJlX2Jsb2NrICAgICAgICAgID0gcmUuY29tcGlsZSgg

L14oWzpibG9ja3M6XSkvICkNCiAgICAsIHJlX2Jsb2NrX3NlICAgICAgID0gcmUu

Y29tcGlsZSggL15bOmJsb2NrczpdJC8gKQ0KICAgICwgcmVfYmxvY2tfbm9ybWFs

ICAgPSByZS5jb21waWxlKCAvXiguKj8pKCR8XHI/XG4oPz1bOmxpc3RoZDpdKXxc

cj9cbig/OlxzKlxufCQpKykvLCAncycgKQ0KICAgICwgcmVfYmxvY2tfZXh0ZW5k

ZWQgPSByZS5jb21waWxlKCAvXiguKj8pKCR8XHI/XG4oPz1bOmxpc3RoZDpdKXxc

cj9cbisoPz1bOmJsb2NrczpdWzpwYmFfYXR0cjpdXC4pKS8sICdzJyApDQogICAg

LCByZV9ydWxlciAgICAgICAgICA9IC9eKFwtXC1cLSt8XCpcKlwqK3xfX18rKShc

cj9cblxzK3wkKS8NCiAgICAsIHJlX2xpc3QgICAgICAgICAgID0gcmUuY29tcGls

ZSggL14oKD86WzpsaXN0aGQ6XVteXDBdKj8oPzpccj9cbnwkKSkrKShccypcbnwk

KS8sJ3MnICkNCiAgICAsIHJlX2xpc3RfaXRlbSAgICAgID0gcmUuY29tcGlsZSgg

L14oW1wjXCpdKykoW15cMF0rPykoXG4oPz1bOmxpc3RoZDpdKXwkKS8sICdzJyAp

DQogICAgLCByZV9kZWZsaXN0ICAgICAgICA9IC9eKCg/Oi0gKD86W15cbl1cbj8p

Kz8pKzo9KD86ICpcblteXDBdKz89Oig/OlxufCQpfCg/OlteXDBdKz8oPzokfFxu

KD89XG58LSApKSkpKSsvDQogICAgLCByZV9kZWZsaXN0X2l0ZW0gICA9IC9eKCg/

Oi0gKD86W15cbl1cbj8pKz8pKyk6PSggKlxuW15cMF0rPz06XHMqKD86XG58JCl8

KD86W15cMF0rPyg/OiR8XG4oPz1cbnwtICkpKSkvDQoNCiAgICAsIHJlX3RhYmxl

ICAgICAgICAgID0gcmUuY29tcGlsZSggL14oKD86dGFibGVbOnBiYV9hdHRyOl1c

Lig/OlxzKC4rPykpXHMqXG4pPyg/Oig/Ols6cGJhX2F0dHI6XVwuW15cblxTXSop

P1x8Lio/XHxbXlxuXFNdKig/OlxufCQpKSspKFteXG5cU10qXG4pPy8sICdzJyAp

DQogICAgLCByZV90YWJsZV9oZWFkICAgICA9IC9edGFibGUoXz8pKFteXG5dKj8p

XC4oPzpbIFx0XSguKz8pKT9ccypcbi8NCiAgICAsIHJlX3RhYmxlX3JvdyAgICAg

ID0gcmUuY29tcGlsZSggL14oPzpcfChbflxeXC1dWzpwYmFfYXR0cjpdKVwuXHMq

XG4pPyhbOnBiYV9hdHRyOl1cLlteXG5cU10qKT9cfCguKj8pXHxbXlxuXFNdKihc

bnwkKS8sICdzJyApDQogICAgLCByZV90YWJsZV9jYXB0aW9uICA9IC9eXHw9KFte

XG4rXSopXG4vDQogICAgLCByZV90YWJsZV9jb2xncm91cCA9IC9eXHw6KFteXG4r

XSopXHxbXHJcdCBdKlxuLw0KICAgICwgcmVfdGFibGVfcm93Z3JvdXAgPSAvXlx8

KFtcXlwtXH5dKShbXlxuK10qKVwuWyBcdFxyXSpcbi8NCg0KICAgICwgcmVfZmVu

Y2VkX3BocmFzZSAgPSAvXlxbKF9fP3xcKlwqP3xcP1w/fFtcLVwrXF5+QCVdKShb

XlxuXSspXDFcXS8NCiAgICAsIHJlX3BocmFzZSAgICAgICAgID0gL14oW1xbXHtd

PykoX18/fFwqXCo/fFw/XD98W1wtXCtcXn5AJV0pLw0KICAgICwgcmVfdGV4dCAg

ICAgICAgICAgPSByZS5jb21waWxlKCAvXi4rPyg/PVtcXDwhXFtfXCpgXXxcbnwk

KS8sICdzJyApDQogICAgLCByZV9pbWFnZSAgICAgICAgICA9IHJlLmNvbXBpbGUo

IC9eISg/IVxzKShbOnBiYV9hdHRyOl0oPzpcLlteXG5cU118XC4oPzpbXlwuXC9d

KSk/KShbXiFcc10rPykgPyg/OlwoKCg/OlteXChcKV0rfFwoW15cKFwpXStcKSkr

KVwpKT8hKD86OihbXlxzXSs/KD89WyEtXC46LUBcW1xcXF0tYHstfl0oPzokfFxz

KXxcc3wkKSkpPy8gKQ0KICAgICwgcmVfaW1hZ2VfZmVuY2VkICAgPSByZS5jb21w

aWxlKCAvXlxbISg/IVxzKShbOnBiYV9hdHRyOl0oPzpcLlteXG5cU118XC4oPzpb

XlwuXC9dKSk/KShbXiFcc10rPykgPyg/OlwoKCg/OlteXChcKV0rfFwoW15cKFwp

XStcKSkrKVwpKT8hKD86OihbXlxzXSs/KD89WyEtXC46LUBcW1xcXF0tYHstfl0o

PzokfFxzKXxcc3wkKSkpP1xdLyApDQogICAgLy8gTkI6IHRoZXJlIGlzIGFuIGV4

Y2VwdGlvbiBpbiBoZXJlIHRvIHByZXZlbnQgbWF0Y2hpbmcgIlRNKSINCiAgICAs

IHJlX2NhcHMgICAgICAgICAgID0gcmUuY29tcGlsZSggL14oKD8hVE1cKXx0bVwp

KVtbOnVjYXBzOl1dKD86W1s6dWNhcHM6XVxkXXsxLH0oPz1cKCl8W1s6dWNhcHM6

XVxkXXsyLH0pKSg/OlwoKC4qPylcKSk/KD89XFd8JCkvICkNCiAgICAsIHJlX2xp

bmsgICAgICAgICAgID0gcmUuY29tcGlsZSggL14iKD8hXHMpKCg/OlteXG4iXXwi

KD8hW1xzOl0pW15cbiJdKyIoPyE6KSkrKSJbOnR4X2NpdGU6XS8gKQ0KICAgICwg

cmVfbGlua19mZW5jZWQgICAgPSAvXlxbIihbXlxuXSs/KSI6KCg/OlxbW2EtejAt

OV0qXF18W15cXV0pKylcXS8NCiAgICAsIHJlX2xpbmtfcmVmICAgICAgID0gcmUu

Y29tcGlsZSggL15cWyhbXlxdXSspXF0oKD86aHR0cHM/OlwvXC98XC8pXFMrKSg/

OlxzKlxufCQpLyApDQogICAgLCByZV9saW5rX3RpdGxlICAgICA9IC9ccypcKCgo

PzpcKFteXChcKV0qXCl8W15cKFwpXSkrKVwpJC8NCiAgICAsIHJlX2Zvb3Rub3Rl

X2RlZiAgID0gL15mblxkKyQvDQogICAgLCByZV9mb290bm90ZSAgICAgICA9IC9e

XFsoXGQrKShcIT8pXF0vDQoNCiAgICAvLyBIVE1MDQogICAgLCByZV9odG1sX3Rh

Z19ibG9jayA9IHJlLmNvbXBpbGUoIC9eXHMqPChbOmh0bWxfaWQ6XSg/OjpbYS16

QS1aXGRdKykqKSgoPzpcc1tePVxzXC9dKyg/OlxzKj1ccypbOmh0bWxfYXR0cjpd

KT8pKyk/XHMqKFwvPyk+KFxuKikvICkNCiAgICAsIHJlX2h0bWxfdGFnICAgICAg

ID0gcmUuY29tcGlsZSggL148KFs6aHRtbF9pZDpdKSgoPzpcc1tePVxzXC9dKyg/

OlxzKj1ccypbOmh0bWxfYXR0cjpdKT8pKyk/XHMqKFwvPyk+KFxuKikvICkNCiAg

ICAsIHJlX2h0bWxfY29tbWVudCAgID0gcmUuY29tcGlsZSggL148IS0tKC4rPykt

LT4vLCAncycgKQ0KICAgICwgcmVfaHRtbF9lbmRfdGFnICAgPSByZS5jb21waWxl

KCAvXjxcLyhbOmh0bWxfaWQ6XSkoW14+XSopPi8gKQ0KICAgICwgcmVfaHRtbF9h

dHRyICAgICAgPSByZS5jb21waWxlKCAvXlxzKihbXj1cc10rKSg/OlxzKj1ccyoo

IlteIl0rInwnW14nXSsnfFtePlxzXSspKT8vICkNCiAgICAsIHJlX2VudGl0eSAg

ICAgICAgID0gLyYoI1xkXGR7Mix9fCN4W1xkYS1mQS1GXXsyLH18W2EtekEtWl1b

YS16QS1aMS00XXsxLDZ9KTsvDQoNCiAgICAvLyBnbHlwaHMNCiAgICAsIHJlX2Rp

bXNpZ24gICAgICAgID0gLyhbXGRcLixdK1snIl0/ID8peCggPykoPz1bXGRcLixd

WyciXT8pL2cNCiAgICAsIHJlX2VtZGFzaCAgICAgICAgID0gLyhefFtcc1x3XSkt

LShbXHNcd118JCkvZw0KICAgICwgcmVfdHJhZGVtYXJrICAgICAgPSAvKFxiID98

XHN8XikoPzpcKCg/OlRNfHRtKVwpfFxbKD86VE18dG0pXF0pL2cNCiAgICAsIHJl

X3JlZ2lzdGVyZWQgICAgID0gLyhcYiA/fFxzfF4pKD86XChSXCl8XFtSXF0pL2dp

DQogICAgLCByZV9jb3B5cmlnaHQgICAgICA9IC8oXGIgP3xcc3xeKSg/OlwoQ1wp

fFxbQ1xdKS9naQ0KICAgICwgcmVfYXBvc3Ryb3BoZSAgICAgPSAvKFx3KVwnKFx3

KS9nDQogICAgLCByZV9kb3VibGVfcHJpbWUgICA9IHJlLmNvbXBpbGUoIC8oXGQq

W1wuLF0/XGQrKSIoPz1cc3wkfFs6cHVuY3Q6XSkvZyApDQogICAgLCByZV9zaW5n

bGVfcHJpbWUgICA9IHJlLmNvbXBpbGUoIC8oXGQqW1wuLF0/XGQrKScoPz1cc3wk

fFs6cHVuY3Q6XSkvZyApDQogICAgLCByZV9jbG9zaW5nX2RxdW90ZSA9IHJlLmNv

bXBpbGUoIC8oW15cc1xbXChdKSIoPz0kfFxzfFs6cHVuY3Q6XSkvZyApDQogICAg

LCByZV9jbG9zaW5nX3NxdW90ZSA9IHJlLmNvbXBpbGUoIC8oW15cc1xbXChdKSco

Pz0kfFxzfFs6cHVuY3Q6XSkvZyApDQoNCiAgICAvLyBwYmENCiAgICAsIHJlX3Bi

YV9jbGFzc2lkICAgID0gL15cKChbXlwoXClcbl0rKVwpLw0KICAgICwgcmVfcGJh

X3BhZGRpbmdfbCAgPSAvXihcKCspLw0KICAgICwgcmVfcGJhX3BhZGRpbmdfciAg

PSAvXihcKSspLw0KICAgICwgcmVfcGJhX2FsaWduX2JsayAgPSAvXig8Pnw8fD58

PSkvDQogICAgLCByZV9wYmFfYWxpZ25faW1nICA9IC9eKDx8Pnw9KS8NCiAgICAs

IHJlX3BiYV92YWxpZ24gICAgID0gL14ofnxcXnxcLSkvDQogICAgLCByZV9wYmFf

Y29sc3BhbiAgICA9IC9eXFwoXGQrKS8NCiAgICAsIHJlX3BiYV9yb3dzcGFuICAg

ID0gL15cLyhcZCspLw0KICAgICwgcmVfcGJhX3N0eWxlcyAgICAgPSAvXlx7KFte

XH1dKilcfS8NCiAgICAsIHJlX3BiYV9jc3MgICAgICAgID0gL15ccyooW146XHNd

Kylccyo6XHMqKC4rKVxzKiQvDQogICAgLCByZV9wYmFfbGFuZyAgICAgICA9IC9e

XFsoW15cW1xdXG5dKylcXS8NCiAgICA7DQoNCiAgdmFyIHBocmFzZV9jb252ZXJ0

ID0gew0KICAgICcqJzogICdzdHJvbmcnDQogICwgJyoqJzogJ2InDQogICwgJz8/

JzogJ2NpdGUnDQogICwgJ18nOiAgJ2VtJw0KICAsICdfXyc6ICdpJw0KICAsICct

JzogICdkZWwnDQogICwgJyUnOiAgJ3NwYW4nDQogICwgJysnOiAgJ2lucycNCiAg

LCAnfic6ICAnc3ViJw0KICAsICdeJzogICdzdXAnDQogICwgJ0AnOiAgJ2NvZGUn

DQogIH07DQoNCiAgLy8gYXJlYSwgYmFzZSwgYmFzZWZvbnQsIGJnc291bmQsIGJy

LCBjb2wsIGNvbW1hbmQsIGVtYmVkLCBmcmFtZSwgaHIsDQogIC8vIGltZywgaW5w

dXQsIGtleWdlbiwgbGluaywgbWV0YSwgcGFyYW0sIHNvdXJjZSwgdHJhY2sgb3Ig

d2JyDQogIHZhciBodG1sX3NpbmdsZXRvbnMgPSB7DQogICAgJ2JyJzogMQ0KICAs

ICdocic6IDENCiAgLCAnaW1nJzogMQ0KICAsICdsaW5rJzogMQ0KICAsICdtZXRh

JzogMQ0KICAsICd3YnInOiAxDQogICwgJ2FyZWEnOiAxDQogICwgJ3BhcmFtJzog

MQ0KICAsICdpbnB1dCc6IDENCiAgLCAnb3B0aW9uJzogMQ0KICAsICdiYXNlJzog

MQ0KICAsICdjb2wnOiAxDQogIH07DQoNCiAgdmFyIHBiYV9hbGlnbl9sb29rdXAg

PSB7DQogICAgJzwnOiAnbGVmdCcNCiAgLCAnPSc6ICdjZW50ZXInDQogICwgJz4n

OiAncmlnaHQnDQogICwgJzw+JzogJ2p1c3RpZnknDQogIH07DQoNCiAgdmFyIHBi

YV92YWxpZ25fbG9va3VwID0gew0KICAgICd+JzonYm90dG9tJw0KICAsICdeJzon

dG9wJw0KICAsICctJzonbWlkZGxlJw0KICB9Ow0KDQogIC8vIEhUTUwgdGFncyBh

bGxvd2VkIGluIHRoZSBkb2N1bWVudCAocm9vdCkgbGV2ZWwgdGhhdCB0cmlnZ2Vy

IEhUTUwgcGFyc2luZw0KICB2YXIgYWxsb3dlZF9ibG9ja3RhZ3MgPSB7DQogICAg

J3AnOiAwDQogICwgJ2hyJzogMA0KICAsICd1bCc6IDENCiAgLCAnb2wnOiAwDQog

ICwgJ2xpJzogMA0KICAsICdkaXYnOiAxDQogICwgJ3ByZSc6IDANCiAgLCAnb2Jq

ZWN0JzogMQ0KICAsICdzY3JpcHQnOiAwDQogICwgJ25vc2NyaXB0JzogMA0KICAs

ICdibG9ja3F1b3RlJzogMQ0KICAsICdub3RleHRpbGUnOiAxDQogIH07DQoNCg0K

ICBmdW5jdGlvbiByaWJib24gKCBmZWVkICkgew0KICAgIHZhciBfc2xvdCA9IG51

bGwNCiAgICAgICwgb3JnID0gZmVlZCArICcnDQogICAgICAsIHBvcyA9IDANCiAg

ICAgIDsNCiAgICByZXR1cm4gew0KICAgICAgc2F2ZTogZnVuY3Rpb24gKCkgew0K

ICAgICAgICBfc2xvdCA9IHBvczsNCiAgICAgIH0NCiAgICAsIGxvYWQ6IGZ1bmN0

aW9uICgpIHsNCiAgICAgICAgcG9zID0gX3Nsb3Q7DQogICAgICAgIGZlZWQgPSBv

cmcuc2xpY2UoIHBvcyApOw0KICAgICAgfQ0KICAgICwgYWR2YW5jZTogZnVuY3Rp

b24gKCBuICkgew0KICAgICAgICBwb3MgKz0gKCB0eXBlb2YgbiA9PT0gJ3N0cmlu

ZycgKSA/IG4ubGVuZ3RoIDogbjsNCiAgICAgICAgcmV0dXJuICggZmVlZCA9IG9y

Zy5zbGljZSggcG9zICkgKTsNCiAgICAgIH0NCiAgICAsIGxvb2tiZWhpbmQ6IGZ1

bmN0aW9uICggbmNoYXJzICkgew0KICAgICAgICBuY2hhcnMgPSBuY2hhcnMgPT0g

bnVsbCA/IDEgOiBuY2hhcnM7DQogICAgICAgIHJldHVybiBvcmcuc2xpY2UoIHBv

cyAtIG5jaGFycywgcG9zICk7DQogICAgICB9DQogICAgLCBzdGFydHNXaXRoOiBm

dW5jdGlvbiAoIHMgKSB7DQogICAgICAgIHJldHVybiBmZWVkLnN1YnN0cmluZygw

LCBzLmxlbmd0aCkgPT09IHM7DQogICAgICB9DQogICAgLCB2YWx1ZU9mOiBmdW5j

dGlvbigpew0KICAgICAgICByZXR1cm4gZmVlZDsNCiAgICAgIH0NCiAgICAsIHRv

U3RyaW5nOiBmdW5jdGlvbigpew0KICAgICAgICByZXR1cm4gZmVlZDsNCiAgICAg

IH0NCiAgICB9Ow0KICB9DQoNCg0KICBmdW5jdGlvbiBidWlsZGVyICggYXJyICkg

ew0KICAgIHZhciBfYXJyID0gX2lzQXJyYXkoIGFyciApID8gYXJyIDogW107DQog

ICAgcmV0dXJuIHsNCiAgICAgIGFkZDogZnVuY3Rpb24gKCBub2RlICkgew0KICAg

ICAgICBpZiAoIHR5cGVvZiBub2RlID09PSAnc3RyaW5nJyAmJg0KICAgICAgICAg

ICAgIHR5cGVvZiBfYXJyW19hcnIubGVuZ3RoIC0gMSBdID09PSAnc3RyaW5nJyAp

IHsNCiAgICAgICAgICAvLyBqb2luIGlmIHBvc3NpYmxlDQogICAgICAgICAgX2Fy

clsgX2Fyci5sZW5ndGggLSAxIF0gKz0gbm9kZTsNCiAgICAgICAgfQ0KICAgICAg

ICBlbHNlIGlmICggX2lzQXJyYXkoIG5vZGUgKSApIHsNCiAgICAgICAgICB2YXIg

ZiA9IG5vZGUuZmlsdGVyKGZ1bmN0aW9uKHMpeyByZXR1cm4gcyAhPT0gdW5kZWZp

bmVkOyB9KTsNCiAgICAgICAgICBfYXJyLnB1c2goIGYgKTsNCiAgICAgICAgfQ0K

ICAgICAgICBlbHNlIGlmICggbm9kZSApIHsNCiAgICAgICAgICBfYXJyLnB1c2go

IG5vZGUgKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gdGhpczsNCiAgICAg

IH0NCiAgICAsIG1lcmdlOiBmdW5jdGlvbiAoIHMgKSB7DQogICAgICAgIGZvciAo

dmFyIGk9MCxsPXMubGVuZ3RoOyBpPGw7IGkrKykgew0KICAgICAgICAgIHRoaXMu

YWRkKCBzW2ldICk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIHRoaXM7DQog

ICAgICB9DQogICAgLCBsaW5lYnJlYWs6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAg

aWYgKCBfYXJyLmxlbmd0aCApIHsNCiAgICAgICAgICB0aGlzLmFkZCggJ1xuJyAp

Ow0KICAgICAgICB9DQogICAgICB9DQogICAgLCBnZXQ6IGZ1bmN0aW9uICgpIHsN

CiAgICAgICAgcmV0dXJuIF9hcnI7DQogICAgICB9DQogICAgfTsNCiAgfQ0KDQoN

CiAgZnVuY3Rpb24gY29weV9wYmEgKCBzLCBibGFja2xpc3QgKSB7DQogICAgaWYg

KCAhcyApIHsgcmV0dXJuIHVuZGVmaW5lZDsgfQ0KICAgIHZhciBrLCBkID0ge307

DQogICAgZm9yICggayBpbiBzICkgew0KICAgICAgaWYgKCBrIGluIHMgJiYgKCAh

YmxhY2tsaXN0IHx8ICEoayBpbiBibGFja2xpc3QpICkgKSB7DQogICAgICAgIGRb

IGsgXSA9IHNbIGsgXTsNCiAgICAgIH0NCiAgICB9DQogICAgcmV0dXJuIGQ7DQog

IH0NCg0KDQogIC8vIGRyb3Agb3IgYWRkIHRhYiBsZXZlbHMgdG8gSnNvbk1MIHRy

ZWUNCiAgZnVuY3Rpb24gcmVpbmRlbnQgKCBtbCwgc2hpZnRfYnkgKSB7DQogICAg

Ly8gYSBiaXQgb2JzZXNzaXZlLCBidXQgdGhlcmUgd2UgYXJlLi4uDQogICAgaWYg

KCAhc2hpZnRfYnkgKSB7IHJldHVybiBtbDsgfQ0KICAgIHJldHVybiBtbC5tYXAo

ZnVuY3Rpb24gKCBzICkgew0KICAgICAgaWYgKCAvXlxuXHQrLy50ZXN0KCBzICkg

KSB7DQogICAgICAgIGlmICggc2hpZnRfYnkgPCAwICkgew0KICAgICAgICAgIHMg

PSBzLnNsaWNlKCAwLCBzaGlmdF9ieSApOw0KICAgICAgICB9DQogICAgICAgIGVs

c2Ugew0KICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxzaGlmdF9ieTsgaSsrKSB7

DQogICAgICAgICAgICBzICs9ICdcdCc7DQogICAgICAgICAgfQ0KICAgICAgICB9

DQogICAgICB9DQogICAgICBlbHNlIGlmICggX2lzQXJyYXkoIHMgKSApIHsNCiAg

ICAgICAgcmV0dXJuIHJlaW5kZW50KCBzLCBzaGlmdF9ieSApOw0KICAgICAgfQ0K

ICAgICAgcmV0dXJuIHM7DQogICAgfSk7DQogIH0NCg0KDQogIGZ1bmN0aW9uIHBh

cnNlX2h0bWxfYXR0ciAoIGF0dHIgKSB7DQogICAgLy8gcGFyc2UgQVRUUiBhbmQg

YWRkIHRvIGVsZW1lbnQNCiAgICB2YXIgX2F0dHIgPSB7fQ0KICAgICAgLCBtDQog

ICAgICAsIHZhbA0KICAgICAgOw0KICAgIHdoaWxlICggKG0gPSByZV9odG1sX2F0

dHIuZXhlYyggYXR0ciApKSApIHsNCiAgICAgIF9hdHRyWyBtWzFdIF0gPSAoIHR5

cGVvZiBtWzJdID09PSAnc3RyaW5nJyApDQogICAgICAgICAgPyBtWzJdLnJlcGxh

Y2UoIC9eKFsiJ10pKC4qKVwxJC8sICckMicgKQ0KICAgICAgICAgIDogbnVsbA0K

ICAgICAgICAgIDsNCiAgICAgIGF0dHIgPSBhdHRyLnNsaWNlKCBtWzBdLmxlbmd0

aCApOw0KICAgIH0NCiAgICByZXR1cm4gX2F0dHI7DQogIH0NCg0KDQogIC8vIFRo

aXMgImluZGVzY2ltaW5hdGVseSIgcGFyc2VzIEhUTUwgdGV4dCBpbnRvIGEgbGlz

dCBvZiBKU09OLU1MIGVsZW1lbnQNCiAgLy8gTm8gc3RlcHMgYXJlIHRha2VuIGhv

d2V2ZXIgdG8gcHJldmVudCB0aGluZ3MgbGlrZSA8dGFibGU+PHA+PHRkPiAtIHVz

ZXIgY2FuIHN0aWxsIGNyZWF0ZSBub25zZW5zaWNhbCBidXQgIndlbGwtZm9ybWVk

IiBtYXJrdXANCiAgZnVuY3Rpb24gcGFyc2VfaHRtbCAoIHNyYywgd2hpdGVsaXN0

X3RhZ3MgKSB7DQogICAgdmFyIG9yZyA9IHNyYyArICcnDQogICAgICAsIGxpc3Qg

PSBbXQ0KICAgICAgLCByb290ID0gbGlzdA0KICAgICAgLCBfc3RhY2sgPSBbXQ0K

ICAgICAgLCBtDQogICAgICAsIG9rdGFnID0gd2hpdGVsaXN0X3RhZ3MgPyBmdW5j

dGlvbiAoIHRhZyApIHsgcmV0dXJuIHRhZyBpbiB3aGl0ZWxpc3RfdGFnczsgfSA6

IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH0NCiAgICAgICwgdGFnDQogICAg

ICA7DQogICAgc3JjID0gKHR5cGVvZiBzcmMgPT09ICdzdHJpbmcnKSA/IHJpYmJv

biggc3JjICkgOiBzcmM7DQogICAgLy8gbG9vcA0KICAgIGRvIHsNCg0KICAgICAg

aWYgKCAobSA9IHJlX2h0bWxfY29tbWVudC5leGVjKCBzcmMgKSkgJiYgb2t0YWco

JyEnKSApIHsNCiAgICAgICAgc3JjLmFkdmFuY2UoIG1bMF0gKTsNCiAgICAgICAg

bGlzdC5wdXNoKCBbICchJywgbVsxXSBdICk7DQogICAgICB9DQoNCiAgICAgIC8v

IGVuZCB0YWcNCiAgICAgIGVsc2UgaWYgKCAobSA9IHJlX2h0bWxfZW5kX3RhZy5l

eGVjKCBzcmMgKSkgJiYgb2t0YWcobVsxXSkgKSB7DQogICAgICAgIHRhZyA9IG1b

MV07DQogICAgICAgIHZhciBqdW5rID0gbVsyXTsNCiAgICAgICAgaWYgKCBfc3Rh

Y2subGVuZ3RoICkgew0KICAgICAgICAgIGZvciAodmFyIGk9X3N0YWNrLmxlbmd0

aC0xOyBpPj0wOyBpLS0pIHsNCiAgICAgICAgICAgIHZhciBoZWFkID0gX3N0YWNr

W2ldOw0KICAgICAgICAgICAgaWYgKCBoZWFkWzBdID09PSB0YWcgKSB7DQogICAg

ICAgICAgICAgIF9zdGFjay5zcGxpY2UoIGkgKTsNCiAgICAgICAgICAgICAgbGlz

dCA9IF9zdGFja1sgX3N0YWNrLmxlbmd0aCAtIDEgXSB8fCByb290Ow0KICAgICAg

ICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAg

ICAgIH0NCiAgICAgICAgc3JjLmFkdmFuY2UoIG1bMF0gKTsNCiAgICAgIH0NCg0K

ICAgICAgLy8gb3Blbi92b2lkIHRhZw0KICAgICAgZWxzZSBpZiAoIChtID0gcmVf

aHRtbF90YWcuZXhlYyggc3JjICkpICYmIG9rdGFnKG1bMV0pICkgew0KICAgICAg

ICBzcmMuYWR2YW5jZSggbVswXSApOw0KICAgICAgICB0YWcgPSBtWzFdOw0KICAg

ICAgICB2YXIgc2luZ2xlID0gbVszXSB8fCBtWzFdIGluIGh0bWxfc2luZ2xldG9u

cw0KICAgICAgICAgICwgdGFpbCA9IG1bNF0NCiAgICAgICAgICAsIGVsZW1lbnQg

PSBbIHRhZyBdDQogICAgICAgICAgOw0KDQogICAgICAgIC8vIGF0dHJpYnV0ZXMN

CiAgICAgICAgaWYgKCBtWzJdICkgeyBlbGVtZW50LnB1c2goIHBhcnNlX2h0bWxf

YXR0ciggbVsyXSApICk7IH0NCg0KICAgICAgICAvLyB0YWcNCiAgICAgICAgaWYg

KCBzaW5nbGUgKSB7IC8vIHNpbmdsZSB0YWcNCiAgICAgICAgICAvLyBsZXQgdXMg

YWRkIHRoZSBlbGVtZW50IGFuZCBjb250aW51ZSBvdXIgcXVlc3QuLi4NCiAgICAg

ICAgICBsaXN0LnB1c2goIGVsZW1lbnQgKTsNCiAgICAgICAgICBpZiAoIHRhaWwg

KSB7IGxpc3QucHVzaCggdGFpbCApOyB9DQogICAgICAgIH0NCiAgICAgICAgZWxz

ZSB7IC8vIG9wZW4gdGFnDQogICAgICAgICAgaWYgKCB0YWlsICkgeyBlbGVtZW50

LnB1c2goIHRhaWwgKTsgfQ0KDQogICAgICAgICAgLy8gVE9ETzogc29tZSB0aGlu

Z3MgYXV0byBjbG9zZSBvdGhlciB0aGluZ3M6IDx0ZD4sIDxsaT4sIDxwPiwgPHRh

YmxlPg0KICAgICAgICAgIC8vIGlmICggdGFnID09PSAncCcgJiYgX3N0YWNrLmxl

bmd0aCApIHsNCiAgICAgICAgICAvLyAgIHZhciBzZWVrID0gL14ocCkkLzsNCiAg

ICAgICAgICAvLyAgIGZvciAodmFyIGk9X3N0YWNrLmxlbmd0aC0xOyBpPj0wOyBp

LS0pIHsNCiAgICAgICAgICAvLyAgICAgdmFyIGhlYWQgPSBfc3RhY2tbaV07DQog

ICAgICAgICAgLy8gICAgIGlmICggc2Vlay50ZXN0KCBoZWFkWzBdICkgLyogPT09

IHRhZyAqLyApIHsNCiAgICAgICAgICAvLyAgICAgICAvL3NyYy5hZHZhbmNlKCBt

WzBdICk7DQogICAgICAgICAgLy8gICAgICAgX3N0YWNrLnNwbGljZSggaSApOw0K

ICAgICAgICAgIC8vICAgICAgIGxpc3QgPSBfc3RhY2tbaV0gfHwgcm9vdDsNCiAg

ICAgICAgICAvLyAgICAgfQ0KICAgICAgICAgIC8vICAgfQ0KICAgICAgICAgIC8v

IH0NCg0KICAgICAgICAgIC8vIFRPRE86IHNvbWUgZWxlbWVudHMgY2FuIG1vdmUg

cGFyc2VyIGludG8gInRleHQiIG1vZGUNCiAgICAgICAgICAvLyBzdHlsZSwgeG1w

LCBpZnJhbWUsIG5vZW1iZWQsIG5vZnJhbWUsIHRleHRhcmVhLCB0aXRsZSwgc2Ny

aXB0LCBub3NjcmlwdCwgcGxhaW50ZXh0DQogICAgICAgICAgLy9pZiAoIC9eKHNj

cmlwdCkkLy50ZXN0KCB0YWcgKSApIHsgfQ0KDQogICAgICAgICAgX3N0YWNrLnB1

c2goIGVsZW1lbnQgKTsNCiAgICAgICAgICBsaXN0LnB1c2goIGVsZW1lbnQgKTsN

CiAgICAgICAgICBsaXN0ID0gZWxlbWVudDsNCg0KICAgICAgICB9DQogICAgICB9

DQogICAgICBlbHNlIHsNCg0KICAgICAgICAvLyBubyBtYXRjaCwgbW92ZSBieSBh

bGwgInVuaW50ZXJlc3RpbmciIGNoYXJzDQogICAgICAgIG0gPSAvKFtePF0rfFte

XDBdKS8uZXhlYyggc3JjICk7DQogICAgICAgIGlmICggbSApIHsNCiAgICAgICAg

ICBsaXN0LnB1c2goIG1bMF0gKTsNCiAgICAgICAgfQ0KICAgICAgICBzcmMuYWR2

YW5jZSggbSA/IG1bMF0ubGVuZ3RoIHx8IDEgOiAxICk7DQoNCiAgICAgIH0NCg0K

ICAgIH0NCiAgICB3aGlsZSAoIHNyYy52YWx1ZU9mKCkgKTsNCiAgICByZXR1cm4g

cm9vdDsNCiAgfQ0KDQogIC8qIGF0dHJpYnV0ZSBwYXJzZXIgKi8NCg0KICBmdW5j

dGlvbiBwYXJzZV9hdHRyICggaW5wdXQsIGVsZW1lbnQsIGVuZF90b2tlbiApIHsN

CiAgICAvKg0KICAgIFRoZSBhdHRyIGJpdCBjYXVzZXMgbWFzc2l2ZSBwcm9ibGVt

cyBmb3Igc3BhbiBlbGVtZW50cyB3aGVuIHBhcmVudGhlc2VzIGFyZSB1c2VkLg0K

ICAgIFBhcmVudGhlc2VzIGFyZSBhIHRvdGFsIG1lc3MgYW5kLCB1bnN1cnByaXNp

bmdseSwgY2F1c2UgdHJpcC11cHM6DQoNCiAgICAgUkM6IGBfe2Rpc3BsYXk6Ymxv

Y2t9KHNwYW4pIHNwYW4gKHNwYW4pX2AgLT4gYDxlbSBzdHlsZT0iZGlzcGxheTpi

bG9jazsiIGNsYXNzPSJzcGFuIj4oc3Bhbikgc3BhbiAoc3Bhbik8L2VtPmANCiAg

ICAgUEhQOiBgX3tkaXNwbGF5OmJsb2NrfShzcGFuKSBzcGFuIChzcGFuKV9gIC0+

IGA8ZW0gc3R5bGU9ImRpc3BsYXk6YmxvY2s7Ij4oc3Bhbikgc3BhbiAoc3Bhbik8

L2VtPmANCg0KICAgIFBIUCBhbmQgUkMgc2VlbSB0byBtb3N0bHkgc29sdmUgdGhp

cyBieSBub3QgcGFyc2luZyBhIGZpbmFsIGF0dHIgcGFyZW5zIG9uIHNwYW5zIGlm

IHRoZQ0KICAgIGZvbGxvd2luZyBjaGFyYWN0ZXIgaXMgYSBub24tc3BhY2UuIEkn

dmUgZHVwbGljYXRlZCB0aGF0OiBDbGFzcy9JRCBpcyBub3QgbWF0Y2hlZCBvbiBz

cGFucw0KICAgIGlmIGl0IGlzIGZvbGxvd2VkIGJ5IGBlbmRfdG9rZW5gIG9yIDxz

cGFjZT4uDQoNCiAgICBMYW5nIGlzIG5vdCBtYXRjaGVkIGhlcmUgaWYgaXQgaXMg

Zm9sbG93ZWQgYnkgdGhlIGVuZCB0b2tlbi4gVGhlb3JldGljYWxseSBJIGNvdWxk

IGxpbWl0IHRoZSBsYW5nDQogICAgYXR0cmlidXRlIHRvIC9eXFtbYS16XXsyK30o

XC1bYS16QS1aMC05XSspKlxdLyBiZWNhdXNlIFRleHRpbGUgaXMgbGF5ZXJlZCBv

biB0b3Agb2YgSFRNTCB3aGljaA0KICAgIG9ubHkgYWNjZXB0cyB2YWxpZCBCQ1Ag

NDcgbGFuZ3VhZ2UgdGFncywgYnV0IHdobyBrbm93cyB3aGF0IGF0cm9jaXRpZXMg

YXJlIGJlaW5nIHByZWZvcm1lZA0KICAgIG91dCB0aGVyZSBpbiB0aGUgcmVhbCB3

b3JsZC4gU28gdGhpcyBhdHRlbXB0cyB0byBlbXVsYXRlIHRoZSBvdGhlciBsaWJy

YXJpZXMuDQogICAgKi8NCiAgICBpbnB1dCArPSAnJzsNCiAgICBpZiAoICFpbnB1

dCB8fCBlbGVtZW50ID09PSAnbm90ZXh0aWxlJyApIHsgcmV0dXJuIHVuZGVmaW5l

ZDsgfQ0KDQogICAgdmFyIG0NCiAgICAgICwgc3QgPSB7fQ0KICAgICAgLCBvID0g

eyAnc3R5bGUnOiBzdCB9DQogICAgICAsIHJlbWFpbmluZyA9IGlucHV0DQogICAg

ICAsIGlzX2Jsb2NrICA9IC9eKD86dGFibGV8dFtkaF18dCg/OmZvb3R8aGVhZHxi

b2R5KSkkLy50ZXN0KCBlbGVtZW50ICkgfHwgcmVfYmxvY2tfc2UudGVzdCggZWxl

bWVudCApIC8vICJpbiIgdGVzdCB3b3VsZCBiZSBiZXR0ZXIgYnV0IHdoYXQgYWJv

dXQgZm4jLj8NCiAgICAgICwgaXNfaW1nICAgID0gZWxlbWVudCA9PT0gJ2ltZycN

CiAgICAgICwgaXNfbGlzdCAgID0gZWxlbWVudCA9PT0gJ2xpJw0KICAgICAgLCBp

c19waHJhc2UgPSAhaXNfYmxvY2sgJiYgIWlzX2ltZyAmJiBlbGVtZW50ICE9PSAn

YScNCiAgICAgICwgcmVfcGJhX2FsaWduID0gKCBpc19pbWcgKSA/IHJlX3BiYV9h

bGlnbl9pbWcgOiByZV9wYmFfYWxpZ25fYmxrDQogICAgICA7DQoNCiAgICBkbyB7

DQoNCiAgICAgIGlmICggKG0gPSByZV9wYmFfc3R5bGVzLmV4ZWMoIHJlbWFpbmlu

ZyApKSApIHsNCiAgICAgICAgbVsxXS5zcGxpdCgnOycpLmZvckVhY2goZnVuY3Rp

b24ocCl7DQogICAgICAgICAgdmFyIGQgPSBwLm1hdGNoKCByZV9wYmFfY3NzICk7

DQogICAgICAgICAgaWYgKCBkICkgeyBzdFsgZFsxXSBdID0gZFsyXTsgfQ0KICAg

ICAgICB9KTsNCiAgICAgICAgcmVtYWluaW5nID0gcmVtYWluaW5nLnNsaWNlKCBt

WzBdLmxlbmd0aCApOw0KICAgICAgICBjb250aW51ZTsNCiAgICAgIH0NCg0KICAg

ICAgaWYgKCAobSA9IHJlX3BiYV9sYW5nLmV4ZWMoIHJlbWFpbmluZyApKSApIHsN

CiAgICAgICAgdmFyIHJtID0gcmVtYWluaW5nLnNsaWNlKCBtWzBdLmxlbmd0aCAp

Ow0KICAgICAgICBpZiAoDQogICAgICAgICAgICAoICFybSAmJiBpc19waHJhc2Ug

KSB8fA0KICAgICAgICAgICAgKCBlbmRfdG9rZW4gJiYgZW5kX3Rva2VuID09PSBy

bS5zbGljZSgwLGVuZF90b2tlbi5sZW5ndGgpICkNCiAgICAgICAgICAgKSB7DQog

ICAgICAgICAgbSA9IG51bGw7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQog

ICAgICAgICAgb1snbGFuZyddID0gbVsxXTsNCiAgICAgICAgICByZW1haW5pbmcg

PSByZW1haW5pbmcuc2xpY2UoIG1bMF0ubGVuZ3RoICk7DQogICAgICAgIH0NCiAg

ICAgICAgY29udGludWU7DQogICAgICB9DQoNCiAgICAgIGlmICggKG0gPSByZV9w

YmFfY2xhc3NpZC5leGVjKCByZW1haW5pbmcgKSkgKSB7DQogICAgICAgIHZhciBy

bSA9IHJlbWFpbmluZy5zbGljZSggbVswXS5sZW5ndGggKTsNCiAgICAgICAgaWYg

KA0KICAgICAgICAgICAgKCAhcm0gJiYgaXNfcGhyYXNlICkgfHwNCiAgICAgICAg

ICAgICggZW5kX3Rva2VuICYmIChybVswXSA9PT0gJyAnIHx8IGVuZF90b2tlbiA9

PT0gcm0uc2xpY2UoMCxlbmRfdG9rZW4ubGVuZ3RoKSkgKQ0KICAgICAgICAgICAp

IHsNCiAgICAgICAgICBtID0gbnVsbDsNCiAgICAgICAgfQ0KICAgICAgICBlbHNl

IHsNCiAgICAgICAgICB2YXIgYml0cyA9IG1bMV0uc3BsaXQoICcjJyApOw0KICAg

ICAgICAgIGlmICggYml0c1swXSApIHsgb1snY2xhc3MnXSA9IGJpdHNbMF07IH0N

CiAgICAgICAgICBpZiAoIGJpdHNbMV0gKSB7IG9bJ2lkJ10gICAgPSBiaXRzWzFd

OyB9DQogICAgICAgICAgcmVtYWluaW5nID0gcm07DQogICAgICAgIH0NCiAgICAg

ICAgY29udGludWU7DQogICAgICB9DQoNCiAgICAgIGlmICggaXNfYmxvY2sgfHwg

aXNfbGlzdCApIHsNCiAgICAgICAgaWYgKCAobSA9IHJlX3BiYV9wYWRkaW5nX2wu

ZXhlYyggcmVtYWluaW5nICkpICkgew0KICAgICAgICAgIHN0WyAicGFkZGluZy1s

ZWZ0IiBdID0gKCBtWzFdLmxlbmd0aCApICsgImVtIjsNCiAgICAgICAgICByZW1h

aW5pbmcgPSByZW1haW5pbmcuc2xpY2UoIG1bMF0ubGVuZ3RoICk7DQogICAgICAg

ICAgY29udGludWU7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCAobSA9IHJlX3Bi

YV9wYWRkaW5nX3IuZXhlYyggcmVtYWluaW5nICkpICkgew0KICAgICAgICAgIHN0

WyAicGFkZGluZy1yaWdodCIgXSA9ICggbVsxXS5sZW5ndGggKSArICJlbSI7DQog

ICAgICAgICAgcmVtYWluaW5nID0gcmVtYWluaW5nLnNsaWNlKCBtWzBdLmxlbmd0

aCApOw0KICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICB9DQogICAgICB9DQoN

CiAgICAgIC8vIG9ubHkgZm9yIGJsb2NrczoNCiAgICAgIGlmICggaXNfaW1nIHx8

IGlzX2Jsb2NrIHx8IGlzX2xpc3QgKSB7DQogICAgICAgIGlmICggKG0gPSByZV9w

YmFfYWxpZ24uZXhlYyggcmVtYWluaW5nICkpICkgew0KICAgICAgICAgIHZhciBh

bGlnbiA9IHBiYV9hbGlnbl9sb29rdXBbIG1bMV0gXTsNCiAgICAgICAgICBpZiAo

IGlzX2ltZyApIHsNCiAgICAgICAgICAgIG9bICdhbGlnbicgXSA9IGFsaWduOw0K

ICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIHN0WyAn

dGV4dC1hbGlnbicgXSA9IGFsaWduOw0KICAgICAgICAgIH0NCiAgICAgICAgICBy

ZW1haW5pbmcgPSByZW1haW5pbmcuc2xpY2UoIG1bMF0ubGVuZ3RoICk7DQogICAg

ICAgICAgY29udGludWU7DQogICAgICAgIH0NCiAgICAgIH0NCg0KICAgICAgLy8g

b25seSBmb3IgdGFibGUgY2VsbHMNCiAgICAgIGlmICggZWxlbWVudCA9PT0gJ3Rk

JyB8fCBlbGVtZW50ID09PSAndHInICkgew0KICAgICAgICBpZiAoIChtID0gcmVf

cGJhX3ZhbGlnbi5leGVjKCByZW1haW5pbmcgKSkgKSB7DQogICAgICAgICAgc3Rb

ICJ2ZXJ0aWNhbC1hbGlnbiIgXSA9IHBiYV92YWxpZ25fbG9va3VwWyBtWzFdIF07

DQogICAgICAgICAgcmVtYWluaW5nID0gcmVtYWluaW5nLnNsaWNlKCBtWzBdLmxl

bmd0aCApOw0KICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICB9DQogICAgICB9

DQogICAgICBpZiAoIGVsZW1lbnQgPT09ICd0ZCcgKSB7DQogICAgICAgIGlmICgg

KG0gPSByZV9wYmFfY29sc3Bhbi5leGVjKCByZW1haW5pbmcgKSkgKSB7DQogICAg

ICAgICAgb1sgImNvbHNwYW4iIF0gPSBtWzFdOw0KICAgICAgICAgIHJlbWFpbmlu

ZyA9IHJlbWFpbmluZy5zbGljZSggbVswXS5sZW5ndGggKTsNCiAgICAgICAgICBj

b250aW51ZTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoIChtID0gcmVfcGJhX3Jv

d3NwYW4uZXhlYyggcmVtYWluaW5nICkpICkgew0KICAgICAgICAgIG9bICJyb3dz

cGFuIiBdID0gbVsxXTsNCiAgICAgICAgICByZW1haW5pbmcgPSByZW1haW5pbmcu

c2xpY2UoIG1bMF0ubGVuZ3RoICk7DQogICAgICAgICAgY29udGludWU7DQogICAg

ICAgIH0NCiAgICAgIH0NCg0KICAgIH0NCiAgICB3aGlsZSAoIG0gKTsNCg0KICAg

IC8vIGNvbGxhcHNlIHN0eWxlcw0KICAgIHZhciBzID0gW107DQogICAgZm9yICgg

dmFyIHYgaW4gc3QgKSB7IHMucHVzaCggdiArICc6JyArIHN0W3ZdICk7IH0NCiAg

ICBpZiAoIHMubGVuZ3RoICkgeyBvLnN0eWxlID0gcy5qb2luKCc7Jyk7IH0gZWxz

ZSB7IGRlbGV0ZSBvLnN0eWxlOyB9DQoNCiAgICByZXR1cm4gcmVtYWluaW5nID09

IGlucHV0DQogICAgICAgICAgICAgID8gdW5kZWZpbmVkDQogICAgICAgICAgICAg

IDogWyBpbnB1dC5sZW5ndGggLSByZW1haW5pbmcubGVuZ3RoLCBvIF0NCiAgICAg

ICAgICAgICAgOw0KICB9DQoNCg0KDQogIC8qIGdseXBoIHBhcnNlciAqLw0KDQog

IGZ1bmN0aW9uIHBhcnNlX2dseXBocyAoIHNyYyApIHsNCiAgICBpZiAoIHR5cGVv

ZiBzcmMgIT09ICdzdHJpbmcnICkgeyByZXR1cm4gc3JjOyB9DQogICAgLy8gTkI6

IG9yZGVyIGlzIGltcG9ydGFudCBoZXJlIC4uLg0KICAgIHJldHVybiBzcmMNCiAg

ICAgIC8vIGFycm93DQogICAgICAucmVwbGFjZSggLyhbXlwtXXxeKS0+LywgJyQx

JiM4NTk0OycgKSAvLyBhcnJvdw0KICAgICAgLy8gZGltZW5zaW9ucw0KICAgICAg

LnJlcGxhY2UoIHJlX2RpbXNpZ24sICckMSYjMjE1OyQyJyApIC8vIGRpbWVuc2lv

biBzaWduDQogICAgICAvLyBlbGxpcHNpcw0KICAgICAgLnJlcGxhY2UoIC8oW14u

XT8pXC57M30vZywgJyQxJiM4MjMwOycgKSAvLyBlbGxpcHNpcw0KICAgICAgLy8g

ZGFzaGVzDQogICAgICAucmVwbGFjZSggcmVfZW1kYXNoLCAnJDEmIzgyMTI7JDIn

ICkgLy8gZW0gZGFzaA0KICAgICAgLnJlcGxhY2UoIC8gLSAvZywgJyAmIzgyMTE7

ICcgKSAvLyBlbiBkYXNoDQogICAgICAvLyBsZWdhbCBtYXJrcw0KICAgICAgLnJl

cGxhY2UoIHJlX3RyYWRlbWFyaywgJyQxJiM4NDgyOycgKSAgIC8vIHRyYWRlbWFy

aw0KICAgICAgLnJlcGxhY2UoIHJlX3JlZ2lzdGVyZWQsICckMSYjMTc0OycgICkg

ICAvLyByZWdpc3RlcmVkDQogICAgICAucmVwbGFjZSggcmVfY29weXJpZ2h0LCAn

JDEmIzE2OTsnICApICAgLy8gY29weXJpZ2h0DQogICAgICAvLyBkb3VibGUgcXVv

dGVzDQogICAgICAucmVwbGFjZSggcmVfZG91YmxlX3ByaW1lLCAnJDEmIzgyNDM7

JyApIC8vIGRvdWJsZSBwcmltZQ0KICAgICAgLnJlcGxhY2UoIHJlX2Nsb3Npbmdf

ZHF1b3RlLCAnJDEmIzgyMjE7JyApIC8vIGRvdWJsZSBjbG9zaW5nIHF1b3RlDQog

ICAgICAucmVwbGFjZSggLyIvZywgJyYjODIyMDsnICkgLy8gZG91YmxlIG9wZW5p

bmcgcXVvdGUNCiAgICAgIC8vIHNpbmdsZSBxdW90ZXMNCiAgICAgIC5yZXBsYWNl

KCByZV9zaW5nbGVfcHJpbWUsICckMSYjODI0MjsnICkgIC8vIHNpbmdsZSBwcmlt

ZQ0KICAgICAgLnJlcGxhY2UoIHJlX2Fwb3N0cm9waGUsICckMSYjODIxNzskMicg

KSAgICAvLyBJJ20gYW4gYXBvc3Ryb3BoZQ0KICAgICAgLnJlcGxhY2UoIHJlX2Ns

b3Npbmdfc3F1b3RlLCAnJDEmIzgyMTc7JyApICAgICAvLyBzaW5nbGUgY2xvc2lu

ZyBxdW90ZQ0KICAgICAgLnJlcGxhY2UoIC8nL2csICcmIzgyMTY7JyApDQogICAg

ICAvLyBmcmFjdGlvbnMgYW5kIGRlZ3JlZXMNCiAgICAgIC5yZXBsYWNlKCAvW1wo

XFtdMVwvNFtcXVwpXS8sICcmIzE4ODsnICkNCiAgICAgIC5yZXBsYWNlKCAvW1wo

XFtdMVwvMltcXVwpXS8sICcmIzE4OTsnICkNCiAgICAgIC5yZXBsYWNlKCAvW1wo

XFtdM1wvNFtcXVwpXS8sICcmIzE5MDsnICkNCiAgICAgIC5yZXBsYWNlKCAvW1wo

XFtdb1tcXVwpXS8sICcmIzE3NjsnICkNCiAgICAgIC5yZXBsYWNlKCAvW1woXFtd

XCtcL1wtW1xdXCldLywgJyYjMTc3OycgKQ0KICAgICAgOw0KICB9DQoNCg0KICAv

KiBsaXN0IHBhcnNlciAqLw0KDQogIGZ1bmN0aW9uIGxpc3RfcGFkICggbiApIHsN

CiAgICB2YXIgcyA9ICdcbic7DQogICAgd2hpbGUgKCBuLS0gKSB7IHMgKz0gJ1x0

JzsgfQ0KICAgIHJldHVybiBzOw0KICB9DQoNCiAgZnVuY3Rpb24gcGFyc2VfbGlz

dCAoIHNyYywgb3B0aW9ucyApIHsNCiAgICBzcmMgPSByaWJib24oIHNyYy5yZXBs

YWNlKCAvKF58XHI/XG4pW1x0IF0rLywgJyQxJyApICk7DQogICAgdmFyIHN0YWNr

ID0gW10NCiAgICAgICwgY3Vycl9pZHggPSB7fQ0KICAgICAgLCBsYXN0X2lkeCA9

IG9wdGlvbnMuX2xzdCB8fCB7fQ0KICAgICAgLCBsaXN0X3BiYQ0KICAgICAgLCBp

dGVtX2luZGV4ID0gMA0KICAgICAgLCBtDQogICAgICAsIG4NCiAgICAgICwgcw0K

ICAgICAgOw0KICAgIHdoaWxlICggKG0gPSByZV9saXN0X2l0ZW0uZXhlYyggc3Jj

ICkpICkgew0KICAgICAgdmFyIGl0ZW0gPSBbICdsaScgXQ0KICAgICAgICAsIHN0

YXJ0X2luZGV4ID0gMA0KICAgICAgICAsIGRlc3RfbGV2ZWwgPSBtWzFdLmxlbmd0

aA0KICAgICAgICAsIHR5cGUgPSBtWzFdLnN1YnN0cigtMSkgPT09ICcjJyA/ICdv

bCcgOiAndWwnDQogICAgICAgICwgbmV3X2xpID0gbnVsbA0KICAgICAgICAsIGxz

dA0KICAgICAgICAsIHBhcg0KICAgICAgICAsIHBiYQ0KICAgICAgICAsIHINCiAg

ICAgICAgOw0KDQogICAgICAvLyBsaXN0IHN0YXJ0cyBhbmQgY29udGludWF0aW9u

cw0KICAgICAgaWYgKCBuID0gL14oX3xcZCspLy5leGVjKCBtWzJdICkgKSB7DQog

ICAgICAgIGl0ZW1faW5kZXggPSBpc0Zpbml0ZSggblsxXSApDQogICAgICAgICAg

ICAgID8gcGFyc2VJbnQoIG5bMV0sIDEwICkNCiAgICAgICAgICAgICAgOiBsYXN0

X2lkeFsgZGVzdF9sZXZlbCBdIHx8IGN1cnJfaWR4WyBkZXN0X2xldmVsIF0gfHwg

MTsNCiAgICAgICAgbVsyXSA9IG1bMl0uc2xpY2UoIG5bMV0ubGVuZ3RoICk7DQog

ICAgICB9DQoNCiAgICAgIGlmICggcGJhID0gcGFyc2VfYXR0ciggbVsyXSwgJ2xp

JyApICkgew0KICAgICAgICBtWzJdID0gbVsyXS5zbGljZSggcGJhWzBdICk7DQog

ICAgICAgIHBiYSA9IHBiYVsxXTsNCiAgICAgIH0NCg0KICAgICAgLy8gbGlzdCBj

b250cm9sDQogICAgICBpZiAoIC9eXC5ccyokLy50ZXN0KCBtWzJdICkgKSB7DQog

ICAgICAgIGxpc3RfcGJhID0gcGJhIHx8IHt9Ow0KICAgICAgICBzcmMuYWR2YW5j

ZSggbVswXSApOw0KICAgICAgICBjb250aW51ZTsNCiAgICAgIH0NCg0KICAgICAg

Ly8gY3JlYXRlIG5lc3RpbmcgdW50aWwgd2UgaGF2ZSBjb3JyZWN0IGxldmVsDQog

ICAgICB3aGlsZSAoIHN0YWNrLmxlbmd0aCA8IGRlc3RfbGV2ZWwgKSB7DQogICAg

ICAgIC8vIGxpc3QgYWx3YXlzIGhhcyBhbiBhdHRyaWJ1dGUgb2JqZWN0LCB0aGlz

IHNpbXBsaWZpZXMgZmlyc3QtcGJhIHJlc29sdXRpb24NCiAgICAgICAgbHN0ID0g

WyB0eXBlLCB7fSwgbGlzdF9wYWQoIHN0YWNrLmxlbmd0aCArIDEgKSwgKG5ld19s

aSA9IFsgJ2xpJyBdKSBdOw0KICAgICAgICBwYXIgPSBzdGFja1sgc3RhY2subGVu

Z3RoIC0gMSBdOw0KICAgICAgICBpZiAoIHBhciApIHsNCiAgICAgICAgICBwYXIu

bGkucHVzaCggbGlzdF9wYWQoIHN0YWNrLmxlbmd0aCApICk7DQogICAgICAgICAg

cGFyLmxpLnB1c2goIGxzdCApOw0KICAgICAgICB9DQogICAgICAgIHN0YWNrLnB1

c2goew0KICAgICAgICAgIHVsOiBsc3QNCiAgICAgICAgLCBsaTogbmV3X2xpDQog

ICAgICAgICwgYXR0OiAwICAvLyBjb3VudCBwYmEncyBmb3VuZCBwZXIgbGlzdA0K

ICAgICAgICB9KTsNCiAgICAgICAgY3Vycl9pZHhbIHN0YWNrLmxlbmd0aCBdID0g

MTsNCiAgICAgIH0NCg0KICAgICAgLy8gcmVtb3ZlIG5lc3RpbmcgdW50aWwgd2Ug

aGF2ZSBjb3JyZWN0IGxldmVsDQogICAgICB3aGlsZSAoIHN0YWNrLmxlbmd0aCA+

IGRlc3RfbGV2ZWwgKSB7DQogICAgICAgIHIgPSBzdGFjay5wb3AoKTsNCiAgICAg

ICAgci51bC5wdXNoKCBsaXN0X3BhZCggc3RhY2subGVuZ3RoICkgKTsNCiAgICAg

ICAgLy8gbGlzdHMgaGF2ZSBhIHByZWRpY3RhYmxlIHN0cnVjdHVyZSAtIG1vdmUg

cGJhIGZyb20gbGlzdGl0ZW0gdG8gbGlzdA0KICAgICAgICBpZiAoIHIuYXR0ID09

PSAxICYmICFyLnVsWzNdWzFdLnN1YnN0ciApIHsNCiAgICAgICAgICBtZXJnZSgg

ci51bFsxXSwgci51bFszXS5zcGxpY2UoIDEsIDEgKVsgMCBdICk7DQogICAgICAg

IH0NCiAgICAgIH0NCg0KICAgICAgLy8gcGFyZW50IGxpc3QNCiAgICAgIHBhciA9

IHN0YWNrWyBzdGFjay5sZW5ndGggLSAxIF07DQoNCiAgICAgIC8vIGhhdmUgbGlz

dF9wYmEgb3Igc3RhcnRfaW5kZXg/DQogICAgICBpZiAoIGl0ZW1faW5kZXggKSB7

DQogICAgICAgIHBhci51bFsxXS5zdGFydCA9IGN1cnJfaWR4WyBkZXN0X2xldmVs

IF0gPSBpdGVtX2luZGV4Ow0KICAgICAgICBpdGVtX2luZGV4ID0gMDsgLy8gZmFs

c3kgcHJldmVudHMgdGhpcyBmcm9tIGZpcmVpbmcgdW50aWwgaXQgaXMgc2V0IGFn

YWluDQogICAgICB9DQogICAgICBpZiAoIGxpc3RfcGJhICkgew0KICAgICAgICBw

YXIuYXR0ID0gOTsgIC8vICJtb3JlIHRoYW4gMSIgcHJldmVudCBwYmEgdHJhbnNm

ZXJzIG9uIGxpc3QgY2xvc2UNCiAgICAgICAgbWVyZ2UoIHBhci51bFsxXSwgbGlz

dF9wYmEgKTsNCiAgICAgICAgbGlzdF9wYmEgPSBudWxsOw0KICAgICAgfQ0KDQog

ICAgICBpZiAoICFuZXdfbGkgKSB7DQogICAgICAgIHBhci51bC5wdXNoKCBsaXN0

X3BhZCggc3RhY2subGVuZ3RoICksIGl0ZW0gKTsNCiAgICAgICAgcGFyLmxpID0g

aXRlbTsNCiAgICAgIH0NCiAgICAgIGlmICggcGJhICkgew0KICAgICAgICBwYXIu

bGkucHVzaCggcGJhICk7DQogICAgICAgIHBhci5hdHQrKzsNCiAgICAgIH0NCiAg

ICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KCBwYXIubGksIHBhcnNlX2lu

bGluZSggbVsyXS50cmltKCksIG9wdGlvbnMgKSApOw0KDQogICAgICBzcmMuYWR2

YW5jZSggbVswXSApOw0KICAgICAgY3Vycl9pZHhbIGRlc3RfbGV2ZWwgXSA9IChj

dXJyX2lkeFsgZGVzdF9sZXZlbCBdIHx8IDApICsgMTsNCiAgICB9DQoNCiAgICAv

LyByZW1lbWJlciBpbmRleGVzIGZvciBjb250aW51YXRpb25zIG5leHQgdGltZQ0K

ICAgIG9wdGlvbnMuX2xzdCA9IGN1cnJfaWR4Ow0KDQogICAgd2hpbGUgKCBzdGFj

ay5sZW5ndGggKSB7DQogICAgICBzID0gc3RhY2sucG9wKCk7DQogICAgICBzLnVs

LnB1c2goIGxpc3RfcGFkKCBzdGFjay5sZW5ndGggKSApOw0KICAgICAgLy8gbGlz

dHMgaGF2ZSBhIHByZWRpY3RhYmxlIHN0cnVjdHVyZSAtIG1vdmUgcGJhIGZyb20g

bGlzdGl0ZW0gdG8gbGlzdA0KICAgICAgaWYgKCBzLmF0dCA9PT0gMSAmJiAhcy51

bFszXVsxXS5zdWJzdHIgKSB7DQogICAgICAgIG1lcmdlKCBzLnVsWzFdLCBzLnVs

WzNdLnNwbGljZSggMSwgMSApWyAwIF0gKTsNCiAgICAgIH0NCiAgICB9DQoNCiAg

ICByZXR1cm4gcy51bDsNCiAgfQ0KDQoNCiAgLyogZGVmaW5pdGlvbnMgbGlzdCBw

YXJzZXIgKi8NCg0KICBmdW5jdGlvbiBwYXJzZV9kZWZsaXN0ICggc3JjLCBvcHRp

b25zICkgew0KICAgIHNyYyA9IHJpYmJvbiggc3JjLnRyaW0oKSApOw0KICAgIHZh

ciBkZWZsaXN0ID0gWyAnZGwnLCAnXG4nIF0NCiAgICAgICwgdGVybXMNCiAgICAg

ICwgZGVmDQogICAgICAsIG0NCiAgICAgIDsNCiAgICB3aGlsZSAoIChtID0gcmVf

ZGVmbGlzdF9pdGVtLmV4ZWMoIHNyYyApKSApIHsNCiAgICAgIC8vIGFkZCB0ZXJt

cw0KICAgICAgdGVybXMgPSBtWzFdLnNwbGl0KCAvKD86XnxcbilcLSAvICkuc2xp

Y2UoMSk7DQogICAgICB3aGlsZSAoIHRlcm1zLmxlbmd0aCApIHsNCiAgICAgICAg

ZGVmbGlzdC5wdXNoKCAnXHQnDQogICAgICAgICAgICAgICAgICAsIFsgJ2R0JyBd

LmNvbmNhdCggcGFyc2VfaW5saW5lKCB0ZXJtcy5zaGlmdCgpLnRyaW0oKSwgb3B0

aW9ucyApICkNCiAgICAgICAgICAgICAgICAgICwgJ1xuJw0KICAgICAgICAgICAg

ICAgICAgKTsNCiAgICAgIH0NCiAgICAgIC8vIGFkZCBkZWZpbml0aW9ucw0KICAg

ICAgZGVmID0gbVsyXS50cmltKCk7DQogICAgICBkZWZsaXN0LnB1c2goICdcdCcN

CiAgICAgICAgICAgICAgICAsIFsgJ2RkJyBdLmNvbmNhdCgNCiAgICAgICAgICAg

ICAgICAgICAgLz06JC8udGVzdCggZGVmICkNCiAgICAgICAgICAgICAgICAgICAg

ICA/IHBhcnNlX2Jsb2NrcyggZGVmLnNsaWNlKDAsLTIpLnRyaW0oKSwgb3B0aW9u

cyApDQogICAgICAgICAgICAgICAgICAgICAgOiBwYXJzZV9pbmxpbmUoIGRlZiwg

b3B0aW9ucyApDQogICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAg

LCAnXG4nDQogICAgICAgICAgICAgICAgKTsNCiAgICAgIHNyYy5hZHZhbmNlKCBt

WzBdICk7DQogICAgfQ0KICAgIHJldHVybiBkZWZsaXN0Ow0KICB9DQoNCg0KICAv

KiB0YWJsZSBwYXJzZXIgKi8NCg0KICBmdW5jdGlvbiBwYXJzZV9jb2xncm91cCAo

IHNyYyApIHsNCiAgICB2YXIgY29sZ3JvdXAgPSBbICdjb2xncm91cCcsIHt9IF07

DQogICAgc3JjLnNwbGl0KCAnfCcgKQ0KICAgICAgICAuZm9yRWFjaChmdW5jdGlv

biAoIHMsIGlzX2NvbCApIHsNCiAgICAgICAgICB2YXIgZCA9IHMudHJpbSgpDQog

ICAgICAgICAgICAsIGNvbCA9ICggaXNfY29sICkgPyB7fSA6IGNvbGdyb3VwWyAx

IF0NCiAgICAgICAgICAgICwgbTsNCiAgICAgICAgICBpZiAoIGQgKSB7DQogICAg

ICAgICAgICBpZiAoIChtID0gL15cXChcZCspLy5leGVjKCBkICkpICkgew0KICAg

ICAgICAgICAgICBjb2wuc3BhbiA9ICttWyAxIF07DQogICAgICAgICAgICAgIGQg

PSBkLnNsaWNlKCBtWyAwIF0ubGVuZ3RoICk7DQogICAgICAgICAgICB9DQogICAg

ICAgICAgICBpZiAoIChtID0gcGFyc2VfYXR0ciggZCwgJ2NvbCcgKSkgKSB7DQog

ICAgICAgICAgICAgIG1lcmdlKCBjb2wsIG1bIDEgXSApOw0KICAgICAgICAgICAg

ICBkID0gZC5zbGljZSggbVsgMCBdICk7DQogICAgICAgICAgICB9DQogICAgICAg

ICAgICBpZiAoIChtID0gL1xiXGQrXGIvLmV4ZWMoIGQgKSkgKSB7DQogICAgICAg

ICAgICAgIGNvbC53aWR0aCA9ICttWzBdOw0KICAgICAgICAgICAgfQ0KICAgICAg

ICAgIH0NCiAgICAgICAgICBpZiAoIGlzX2NvbCApIHsNCiAgICAgICAgICAgIGNv

bGdyb3VwLnB1c2goICdcblx0XHQnLCBbICdjb2wnLCBjb2wgXSApOw0KICAgICAg

ICAgIH0NCiAgICAgICAgfSk7DQogICAgcmV0dXJuIGNvbGdyb3VwLmNvbmNhdChb

ICdcblx0JyBdKTsNCiAgfQ0KDQogIGZ1bmN0aW9uIHBhcnNlX3RhYmxlICggc3Jj

LCBvcHRpb25zICkgew0KICAgIHNyYyA9IHJpYmJvbiggc3JjLnRyaW0oKSApOw0K

ICAgIHZhciByb3dncm91cHMgPSBbXQ0KICAgICAgLCBjb2xncm91cA0KICAgICAg

LCBjYXB0aW9uDQogICAgICAsIHRfYXR0ciA9IHt9DQogICAgICAsIHRfY3Vycg0K

ICAgICAgLCByb3cNCiAgICAgICwgaW5uZXINCiAgICAgICwgcGJhDQogICAgICAs

IG1vcmUNCiAgICAgICwgbQ0KICAgICAgLCBleHRlbmRlZCA9IDANCiAgICAgIDsN

CiAgICB2YXIgc2V0X3Jvd2dyb3VwID0gZnVuY3Rpb24gKCB0eXBlLCBwYmEgKSB7

DQogICAgICB0X2N1cnIgPSBbIHR5cGUsIHBiYSB8fCB7fSBdOw0KICAgICAgcm93

Z3JvdXBzLnB1c2goIHRfY3VyciApOw0KICAgIH07DQoNCiAgICBpZiAoIChtID0g

cmVfdGFibGVfaGVhZC5leGVjKCBzcmMgKSkgKSB7DQogICAgICAvLyBwYXJzZSBh

bmQgYXBwbHkgdGFibGUgYXR0cg0KICAgICAgc3JjLmFkdmFuY2UoIG1bMF0gKTsN

CiAgICAgIHBiYSA9IHBhcnNlX2F0dHIoIG1bMl0sICd0YWJsZScgKTsNCiAgICAg

IGlmICggcGJhICkgew0KICAgICAgICBtZXJnZSggdF9hdHRyLCBwYmFbMV0gKTsN

CiAgICAgIH0NCiAgICAgIGlmICggbVszXSApIHsNCiAgICAgICAgdF9hdHRyLnN1

bW1hcnkgPSBtWzNdOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIGNhcHRpb24N

CiAgICBpZiAoIChtID0gcmVfdGFibGVfY2FwdGlvbi5leGVjKCBzcmMgKSkgKSB7

DQogICAgICBjYXB0aW9uID0gWyAnY2FwdGlvbicgXTsNCiAgICAgIGlmICggKHBi

YSA9IHBhcnNlX2F0dHIoIG1bMV0sICdjYXB0aW9uJyApKSApIHsNCiAgICAgICAg

Y2FwdGlvbi5wdXNoKCBwYmFbMV0gKTsNCiAgICAgICAgbVsxXSA9IG1bMV0uc2xp

Y2UoIHBiYVswXSApOw0KICAgICAgfQ0KICAgICAgaWYgKCAvXC4vLnRlc3QoIG1b

MV0gKSApIHsgLy8gbWFuZGF0b3J5ICIuIg0KICAgICAgICBjYXB0aW9uLnB1c2go

IG1bMV0uc2xpY2UoIDEgKS5yZXBsYWNlKCAvXHxccyokLywgJycgKS50cmltKCkg

KTsNCiAgICAgICAgZXh0ZW5kZWQrKzsNCiAgICAgICAgc3JjLmFkdmFuY2UoIG1b

MF0gKTsNCiAgICAgIH0NCiAgICAgIGVsc2Ugew0KICAgICAgICBjYXB0aW9uID0g

bnVsbDsNCiAgICAgIH0NCiAgICB9DQoNCiAgICBkbyB7DQogICAgICAvLyBjb2xn

cm91cA0KICAgICAgaWYgKCAobSA9IHJlX3RhYmxlX2NvbGdyb3VwLmV4ZWMoIHNy

YyApKSApIHsNCiAgICAgICAgY29sZ3JvdXAgPSBwYXJzZV9jb2xncm91cCggbVsx

XSApOw0KICAgICAgICBleHRlbmRlZCsrOw0KICAgICAgfQ0KICAgICAgLy8gInJv

d2dyb3VwIiAodGJvZHksIHRoZWFkLCB0Zm9vdCkNCiAgICAgIGVsc2UgaWYgKCAo

bSA9IHJlX3RhYmxlX3Jvd2dyb3VwLmV4ZWMoIHNyYyApKSApIHsNCiAgICAgICAg

Ly8gUEhQIGFsbG93cyBhbnkgYW1vdW50IG9mIHRoZXNlIGluIGFueSBvcmRlcg0K

ICAgICAgICAvLyBhbmQgc2ltcGx5IHRyYW5zbGF0ZXMgdGhlbSBzdHJhaWdodCB0

aHJvdWdoDQogICAgICAgIC8vIHRoZSBzYW1lIGlzIGRvbmUgaGVyZS4NCiAgICAg

ICAgdmFyIHRhZyA9ICggbVsxXSA9PT0gJ14nICkgPyAndGhlYWQnIDoNCiAgICAg

ICAgICAgICAgICAgICggbVsxXSA9PT0gJ34nICkgPyAndGZvb3QnIDoNCiAgICAg

ICAgICAgICAgICAgICggbVsxXSA9PT0gJy0nICkgPyAndGJvZHknIDogJ3Rib2R5

JyA7DQogICAgICAgIHBiYSA9IHBhcnNlX2F0dHIoIG1bMl0rJyAnLCB0YWcgKTsN

CiAgICAgICAgc2V0X3Jvd2dyb3VwKCB0YWcsIHBiYSAmJiBwYmFbMV0gKTsNCiAg

ICAgICAgZXh0ZW5kZWQrKzsNCiAgICAgIH0NCiAgICAgIC8vIHJvdw0KICAgICAg

ZWxzZSBpZiAoIChtID0gcmVfdGFibGVfcm93LmV4ZWMoIHNyYyApKSApIHsNCiAg

ICAgICAgaWYgKCAhdF9jdXJyICkgeyBzZXRfcm93Z3JvdXAoICd0Ym9keScgKTsg

fQ0KDQogICAgICAgIHJvdyA9IFsgJ3RyJyBdOw0KDQogICAgICAgIGlmICggbVsy

XSAmJiAocGJhID0gcGFyc2VfYXR0ciggbVsyXSwgJ3RyJyApKSApIHsNCiAgICAg

ICAgICAvLyBGSVhNRTogcmVxdWlyZXMgIlwuXHM/IiAtLSBlbHNlIHdoYXQgPw0K

ICAgICAgICAgIHJvdy5wdXNoKCBwYmFbMV0gKTsNCiAgICAgICAgfQ0KDQogICAg

ICAgIHRfY3Vyci5wdXNoKCAnXG5cdFx0Jywgcm93ICk7DQogICAgICAgIGlubmVy

ID0gcmliYm9uKCBtWzNdICk7DQoNCiAgICAgICAgZG8gew0KICAgICAgICAgIGlu

bmVyLnNhdmUoKTsNCg0KICAgICAgICAgIC8vIGNlbGwgbG9vcA0KICAgICAgICAg

IHZhciB0aCA9IGlubmVyLnN0YXJ0c1dpdGgoICdfJyApDQogICAgICAgICAgICAs

IGNlbGwgPSBbIHRoID8gJ3RoJyA6ICd0ZCcgXQ0KICAgICAgICAgICAgOw0KICAg

ICAgICAgIGlmICggdGggKSB7DQogICAgICAgICAgICBpbm5lci5hZHZhbmNlKCAx

ICk7DQogICAgICAgICAgfQ0KDQogICAgICAgICAgcGJhID0gcGFyc2VfYXR0cigg

aW5uZXIsICd0ZCcgKTsNCiAgICAgICAgICBpZiAoIHBiYSApIHsNCiAgICAgICAg

ICAgIGlubmVyLmFkdmFuY2UoIHBiYVswXSApOw0KICAgICAgICAgICAgY2VsbC5w

dXNoKCBwYmFbMV0gKTsgLy8gRklYTUU6IGRvbid0IGRvIHRoaXMgaWYgbmV4dCB0

ZXh0IGZhaWxzDQogICAgICAgICAgfQ0KDQogICAgICAgICAgaWYgKCBwYmEgfHwg

dGggKSB7DQogICAgICAgICAgICB2YXIgcCA9IC9eXC5ccyovLmV4ZWMoIGlubmVy

ICk7DQogICAgICAgICAgICBpZiAoIHAgKSB7DQogICAgICAgICAgICAgIGlubmVy

LmFkdmFuY2UoIHBbMF0gKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVs

c2Ugew0KICAgICAgICAgICAgICBjZWxsID0gWyAndGQnIF07DQogICAgICAgICAg

ICAgIGlubmVyLmxvYWQoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQoN

CiAgICAgICAgICB2YXIgbXggPSAvXig9PS4qPz09fFteXHxdKSovLmV4ZWMoIGlu

bmVyICk7DQogICAgICAgICAgY2VsbCA9IGNlbGwuY29uY2F0KCBwYXJzZV9pbmxp

bmUoIG14WzBdLCBvcHRpb25zICkgKTsNCiAgICAgICAgICByb3cucHVzaCggJ1xu

XHRcdFx0JywgY2VsbCApOw0KICAgICAgICAgIG1vcmUgPSBpbm5lci52YWx1ZU9m

KCkuY2hhckF0KCBteFswXS5sZW5ndGggKSA9PT0gJ3wnOw0KICAgICAgICAgIGlu

bmVyLmFkdmFuY2UoIG14WzBdLmxlbmd0aCArIDEgKTsNCg0KICAgICAgICB9DQog

ICAgICAgIHdoaWxlICggbW9yZSApOw0KDQogICAgICAgIHJvdy5wdXNoKCAnXG5c

dFx0JyApOw0KDQogICAgICB9DQogICAgICAvLw0KICAgICAgaWYgKCBtICkgew0K

ICAgICAgICBzcmMuYWR2YW5jZSggbVswXSApOw0KICAgICAgfQ0KICAgIH0gd2hp

bGUgKCBtICk7DQoNCiAgICAvLyBhc3NlbWJsZSB0YWJsZQ0KICAgIHZhciB0YWJs

ZSA9IFsgJ3RhYmxlJywgdF9hdHRyIF07DQogICAgaWYgKCBleHRlbmRlZCApIHsN

CiAgICAgIGlmICggY2FwdGlvbiApIHsNCiAgICAgICAgdGFibGUucHVzaCggJ1xu

XHQnLCBjYXB0aW9uICkNCiAgICAgIH0NCiAgICAgIGlmICggY29sZ3JvdXAgKSB7

DQogICAgICAgIHRhYmxlLnB1c2goICdcblx0JywgY29sZ3JvdXAgKQ0KICAgICAg

fQ0KICAgICAgcm93Z3JvdXBzLmZvckVhY2goZnVuY3Rpb24gKCB0Ym9keSApIHsN

CiAgICAgICAgdGFibGUucHVzaCggJ1xuXHQnLCB0Ym9keS5jb25jYXQoWyAnXG5c

dCcgXSkgKTsNCiAgICAgIH0pOw0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgIHRh

YmxlID0gdGFibGUuY29uY2F0KCByZWluZGVudCggcm93Z3JvdXBzWzBdLnNsaWNl

KDIpLCAtMSApICk7DQogICAgfQ0KDQogICAgdGFibGUucHVzaCggJ1xuJyApOw0K

ICAgIHJldHVybiB0YWJsZTsNCg0KICB9DQoNCg0KICAvKiBpbmxpbmUgcGFyc2Vy

ICovDQoNCiAgZnVuY3Rpb24gcGFyc2VfaW5saW5lICggc3JjLCBvcHRpb25zICkg

ew0KDQogICAgc3JjID0gcmliYm9uKCBzcmMgKTsNCiAgICB2YXIgbGlzdCA9IGJ1

aWxkZXIoKQ0KICAgICAgLCBtDQogICAgICAsIHBiYQ0KICAgICAgOw0KDQogICAg

Ly8gbG9vcA0KICAgIGRvIHsNCiAgICAgIHNyYy5zYXZlKCk7DQoNCiAgICAgIC8v

IGxpbmVicmVhayAtLSBoYXZpbmcgdGhpcyBmaXJzdCBrZWVwcyBpdCBmcm9tIG1l

c3NpbmcgdG8gbXVjaCB3aXRoIG90aGVyIHBocmFzZXMNCiAgICAgIGlmICggc3Jj

LnN0YXJ0c1dpdGgoICdcclxuJyApICkgew0KICAgICAgICBzcmMuYWR2YW5jZSgg

MSApOyAvLyBza2lwIGNhcnRyaWRnZSByZXR1cm5zDQogICAgICB9DQogICAgICBp

ZiAoIHNyYy5zdGFydHNXaXRoKCAnXG4nICkgKSB7DQogICAgICAgIHNyYy5hZHZh

bmNlKCAxICk7DQoNCiAgICAgICAgaWYgKCBvcHRpb25zLmJyZWFrcyApIHsNCiAg

ICAgICAgICBsaXN0LmFkZCggWyAnYnInIF0gKTsNCiAgICAgICAgfQ0KICAgICAg

ICBsaXN0LmFkZCggJ1xuJyApOw0KICAgICAgICBjb250aW51ZTsNCiAgICAgIH0N

Cg0KICAgICAgLy8gaW5saW5lIG5vdGV4dGlsZQ0KICAgICAgaWYgKCAobSA9IC9e

PT0oLio/KT09Ly5leGVjKCBzcmMgKSkgKSB7DQogICAgICAgIHNyYy5hZHZhbmNl

KCBtWzBdICk7DQogICAgICAgIGxpc3QuYWRkKCBtWzFdICk7DQogICAgICAgIGNv

bnRpbnVlOw0KICAgICAgfQ0KDQogICAgICAvLyBsb29rYmVoaW5kID0+IC8oW1xz

Pi4sIic/ITs6XSkkLw0KICAgICAgdmFyIGJlaGluZCA9IHNyYy5sb29rYmVoaW5k

KCAxICk7DQogICAgICB2YXIgYm91bmRhcnkgPSAhYmVoaW5kIHx8IC9eW1xzPi4s

Iic/ITs6KCldJC8udGVzdCggYmVoaW5kICk7DQogICAgICAvLyBGSVhNRTogbmVl

ZCB0byB0ZXN0IHJpZ2h0IGJvdW5kYXJ5IGZvciBwaHJhc2VzIGFzIHdlbGwNCiAg

ICAgIGlmICggKG0gPSByZV9waHJhc2UuZXhlYyggc3JjICkpICYmICggYm91bmRh

cnkgfHwgbVsxXSApICkgew0KICAgICAgICBzcmMuYWR2YW5jZSggbVswXSApOw0K

ICAgICAgICB2YXIgdG9rID0gbVsyXQ0KICAgICAgICAgICwgZmVuY2UgPSBtWzFd

DQogICAgICAgICAgLCBwaHJhc2VfdHlwZSA9IHBocmFzZV9jb252ZXJ0WyB0b2sg

XQ0KICAgICAgICAgICwgY29kZSA9IHBocmFzZV90eXBlID09PSAnY29kZScNCiAg

ICAgICAgICA7DQogICAgICAgIGlmICggKHBiYSA9ICFjb2RlICYmIHBhcnNlX2F0

dHIoIHNyYywgcGhyYXNlX3R5cGUsIHRvayApKSApIHsNCiAgICAgICAgICBzcmMu

YWR2YW5jZSggcGJhWzBdICk7DQogICAgICAgICAgcGJhID0gcGJhWzFdOw0KICAg

ICAgICB9DQogICAgICAgIC8vIEZJWE1FOiBpZiB3ZSBjYW4ndCBtYXRjaCB0aGUg

ZmVuY2Ugb24gdGhlIGVuZCwgd2Ugc2hvdWxkIG91dHB1dCBmZW5jZS1wcmVmaXgg

YXMgbm9ybWFsIHRleHQNCiAgICAgICAgLy8gc2VlayBlbmQNCiAgICAgICAgdmFy

IG1fbWlkOw0KICAgICAgICB2YXIgbV9lbmQ7DQogICAgICAgIGlmICggZmVuY2Ug

PT09ICdbJyApIHsNCiAgICAgICAgICBtX21pZCA9ICdeKC4qPyknOw0KICAgICAg

ICAgIG1fZW5kID0gJyg/Ol0pJzsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlIGlm

ICggZmVuY2UgPT09ICd7JyApIHsNCiAgICAgICAgICBtX21pZCA9ICdeKC4qPykn

Ow0KICAgICAgICAgIG1fZW5kID0gJyg/On0pJzsNCiAgICAgICAgfQ0KICAgICAg

ICBlbHNlIHsNCiAgICAgICAgICB2YXIgdDEgPSByZS5lc2NhcGUoIHRvay5jaGFy

QXQoMCkgKTsNCiAgICAgICAgICBtX21pZCA9ICggY29kZSApDQogICAgICAgICAg

ICAgICAgICAgID8gJ14oXFxTK3xcXFMrLio/XFxTKScNCiAgICAgICAgICAgICAg

ICAgICAgOiAnXihbXlxccycgKyB0MSArICddK3xbXlxccycgKyB0MSArICddLio/

XFxTKCcrdDErJyopKScNCiAgICAgICAgICAgICAgICAgICAgOw0KICAgICAgICAg

IG1fZW5kID0gJyg/PSR8W1xccy4sIlwnIT87OigpwqvCu+KAnuKAnOKAneKAmuKA

mOKAmV0pJzsNCiAgICAgICAgfQ0KICAgICAgICB2YXIgcnggPSByZS5jb21waWxl

KCBtX21pZCArICcoJyArIHJlLmVzY2FwZSggdG9rICkgKyAnKScgKyBtX2VuZCAp

Ow0KICAgICAgICBpZiAoIChtID0gcnguZXhlYyggc3JjICkpICYmIG1bMV0gKSB7

DQogICAgICAgICAgc3JjLmFkdmFuY2UoIG1bMF0gKTsNCiAgICAgICAgICBpZiAo

IGNvZGUgKSB7DQogICAgICAgICAgICBsaXN0LmFkZCggWyBwaHJhc2VfdHlwZSwg

bVsxXSBdICk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2Ugew0KICAgICAg

ICAgICAgbGlzdC5hZGQoIFsgcGhyYXNlX3R5cGUsIHBiYSBdLmNvbmNhdCggcGFy

c2VfaW5saW5lKCBtWzFdLCBvcHRpb25zICkgKSApOw0KICAgICAgICAgIH0NCiAg

ICAgICAgICBjb250aW51ZTsNCiAgICAgICAgfQ0KICAgICAgICAvLyBlbHNlDQog

ICAgICAgIHNyYy5sb2FkKCk7DQogICAgICB9DQoNCiAgICAgIC8vIGltYWdlDQog

ICAgICBpZiAoIChtID0gcmVfaW1hZ2UuZXhlYyggc3JjICkpIHx8IChtID0gcmVf

aW1hZ2VfZmVuY2VkLmV4ZWMoIHNyYyApKSApIHsNCiAgICAgICAgc3JjLmFkdmFu

Y2UoIG1bMF0gKTsNCg0KICAgICAgICBwYmEgPSBtWzFdICYmIHBhcnNlX2F0dHIo

IG1bMV0sICdpbWcnICk7DQogICAgICAgIHZhciBhdHRyID0gcGJhID8gcGJhWzFd

IDogeyAnc3JjJzonJyB9DQogICAgICAgICAgLCBpbWcgPSBbICdpbWcnLCBhdHRy

IF0NCiAgICAgICAgICA7DQogICAgICAgIGF0dHIuc3JjID0gbVsyXTsNCiAgICAg

ICAgYXR0ci5hbHQgPSBtWzNdID8gKCBhdHRyLnRpdGxlID0gbVszXSApIDogJyc7

DQoNCiAgICAgICAgaWYgKCBtWzRdICkgeyAvLyArY2l0ZSBjYXVzZXMgaW1hZ2Ug

dG8gYmUgd3JhcGVkIHdpdGggYSBsaW5rIChvciBsaW5rX3JlZik/DQogICAgICAg

ICAgLy8gVE9ETzogc3VwcG9ydCBsaW5rX3JlZiBmb3IgaW1hZ2UgY2l0ZQ0KICAg

ICAgICAgIGltZyA9IFsgJ2EnLCB7ICdocmVmJzogbVs0XSB9LCBpbWcgXTsNCiAg

ICAgICAgfQ0KICAgICAgICBsaXN0LmFkZCggaW1nICk7DQogICAgICAgIGNvbnRp

bnVlOw0KICAgICAgfQ0KDQogICAgICAvLyBodG1sIGNvbW1lbnQNCiAgICAgIGlm

ICggKG0gPSByZV9odG1sX2NvbW1lbnQuZXhlYyggc3JjICkpICkgew0KICAgICAg

ICBzcmMuYWR2YW5jZSggbVswXSApOw0KICAgICAgICBsaXN0LmFkZCggWyAnIScs

IG1bMV0gXSApOw0KICAgICAgICBjb250aW51ZTsNCiAgICAgIH0NCiAgICAgIC8v

IGh0bWwgdGFnDQogICAgICAvLyBUT0RPOiB0aGlzIHNlZW1zIHRvIGhhdmUgYSBs

b3Qgb2Ygb3ZlcmxhcCB3aXRoIGJsb2NrIHRhZ3MuLi4gRFJZPw0KICAgICAgaWYg

KCAobSA9IHJlX2h0bWxfdGFnLmV4ZWMoIHNyYyApKSApIHsNCiAgICAgICAgc3Jj

LmFkdmFuY2UoIG1bMF0gKTsNCiAgICAgICAgdmFyIHRhZyA9IG1bMV0NCiAgICAg

ICAgICAsIHNpbmdsZSA9IG1bM10gfHwgbVsxXSBpbiBodG1sX3NpbmdsZXRvbnMN

CiAgICAgICAgICAsIGVsZW1lbnQgPSBbIHRhZyBdDQogICAgICAgICAgLCB0YWls

ID0gbVs0XQ0KICAgICAgICAgIDsNCiAgICAgICAgaWYgKCBtWzJdICkgew0KICAg

ICAgICAgIGVsZW1lbnQucHVzaCggcGFyc2VfaHRtbF9hdHRyKCBtWzJdICkgKTsN

CiAgICAgICAgfQ0KICAgICAgICBpZiAoIHNpbmdsZSApIHsgLy8gc2luZ2xlIHRh

Zw0KICAgICAgICAgIGxpc3QuYWRkKCBlbGVtZW50ICkuYWRkKCB0YWlsICk7DQog

ICAgICAgICAgY29udGludWU7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7IC8v

IG5lZWQgdGVybWluYXRvcg0KICAgICAgICAgIC8vIGd1bHAgdXAgdGhlIHJlc3Qg

b2YgdGhpcyBibG9jay4uLg0KICAgICAgICAgIHZhciByZV9lbmRfdGFnID0gcmUu

Y29tcGlsZSggIl4oLio/KSg8LyIgKyB0YWcgKyAiXFxzKj4pIiwgJ3MnICk7DQog

ICAgICAgICAgaWYgKCAobSA9IHJlX2VuZF90YWcuZXhlYyggc3JjICkpICkgew0K

ICAgICAgICAgICAgc3JjLmFkdmFuY2UoIG1bMF0gKTsNCiAgICAgICAgICAgIGlm

ICggdGFnID09PSAnY29kZScgKSB7DQogICAgICAgICAgICAgIGVsZW1lbnQucHVz

aCggdGFpbCwgbVsxXSApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxz

ZSBpZiAoIHRhZyA9PT0gJ25vdGV4dGlsZScgKSB7DQogICAgICAgICAgICAgIGxp

c3QubWVyZ2UoIHBhcnNlX2lubGluZSggbVsxXSwgb3B0aW9ucyApICk7DQogICAg

ICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAg

ZWxzZSB7DQogICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LmNvbmNhdCgg

cGFyc2VfaW5saW5lKCBtWzFdLCBvcHRpb25zICkgKTsNCiAgICAgICAgICAgIH0N

CiAgICAgICAgICAgIGxpc3QuYWRkKCBlbGVtZW50ICk7DQogICAgICAgICAgICBj

b250aW51ZTsNCiAgICAgICAgICB9DQogICAgICAgICAgLy8gZW5kIHRhZyBpcyBt

aXNzaW5nLCB0cmVhdCB0YWcgYXMgbm9ybWFsIHRleHQuLi4NCiAgICAgICAgfQ0K

ICAgICAgICBzcmMubG9hZCgpOw0KICAgICAgfQ0KDQogICAgICAvLyBmb290bm90

ZQ0KICAgICAgaWYgKCAobSA9IHJlX2Zvb3Rub3RlLmV4ZWMoIHNyYyApKSAmJiAv

XFMvLnRlc3QoIGJlaGluZCApICkgew0KICAgICAgICBzcmMuYWR2YW5jZSggbVsw

XSApOw0KICAgICAgICBsaXN0LmFkZCggWyAnc3VwJywgeyAnY2xhc3MnOiAnZm9v

dG5vdGUnLCAnaWQnOiAnZm5yJyArIG1bMV0gfSwNCiAgICAgICAgICAgICAgICAg

ICAgKCBtWzJdID09PSAnIScgPyBtWzFdIC8vICIhIiBzdXBwcmVzc2VzIHRoZSBs

aW5rDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogWyAnYScs

IHsgaHJlZjogJyNmbicgKyBtWzFdIH0sIG1bMV0gXSApDQogICAgICAgICAgICAg

ICAgICBdICk7DQogICAgICAgIGNvbnRpbnVlOw0KICAgICAgfQ0KDQogICAgICAv

LyBjYXBzIC8gYWJicg0KICAgICAgaWYgKCAobSA9IHJlX2NhcHMuZXhlYyggc3Jj

ICkpICkgew0KICAgICAgICBzcmMuYWR2YW5jZSggbVswXSApOw0KICAgICAgICB2

YXIgY2FwcyA9IFsgJ3NwYW4nLCB7ICdjbGFzcyc6ICdjYXBzJyB9LCBtWzFdIF07

DQogICAgICAgIGlmICggbVsyXSApIHsNCiAgICAgICAgICBjYXBzID0gWyAnYWNy

b255bScsIHsgJ3RpdGxlJzogbVsyXSB9LCBjYXBzIF07IC8vIEZJWE1FOiB1c2Ug

PGFiYnI+LCBub3QgYWNyb255bSENCiAgICAgICAgfQ0KICAgICAgICBsaXN0LmFk

ZCggY2FwcyApOw0KICAgICAgICBjb250aW51ZTsNCiAgICAgIH0NCg0KICAgICAg

Ly8gbGlua3MNCiAgICAgIGlmICggKGJvdW5kYXJ5ICYmIChtID0gcmVfbGluay5l

eGVjKCBzcmMgKSkpIHx8IChtID0gcmVfbGlua19mZW5jZWQuZXhlYyggc3JjICkp

ICkgew0KICAgICAgICBzcmMuYWR2YW5jZSggbVswXSApOw0KICAgICAgICB2YXIg

dGl0bGUgPSBtWzFdLm1hdGNoKCByZV9saW5rX3RpdGxlICkNCiAgICAgICAgICAs

IGlubmVyID0gKCB0aXRsZSApID8gbVsxXS5zbGljZSggMCwgbVsxXS5sZW5ndGgg

LSB0aXRsZVswXS5sZW5ndGggKSA6IG1bMV0NCiAgICAgICAgICA7DQogICAgICAg

IGlmICggKHBiYSA9IHBhcnNlX2F0dHIoIGlubmVyLCAnYScgKSkgKSB7DQogICAg

ICAgICAgaW5uZXIgPSBpbm5lci5zbGljZSggcGJhWzBdICk7DQogICAgICAgICAg

cGJhID0gcGJhWzFdOw0KICAgICAgICB9DQogICAgICAgIGVsc2Ugew0KICAgICAg

ICAgIHBiYSA9IHt9Ow0KICAgICAgICB9DQogICAgICAgIGlmICggdGl0bGUgJiYg

IWlubmVyICkgeyBpbm5lciA9IHRpdGxlWzBdOyB0aXRsZSA9ICIiOyB9DQogICAg

ICAgIHBiYS5ocmVmID0gbVsyXTsNCiAgICAgICAgaWYgKCB0aXRsZSApIHsgcGJh

LnRpdGxlID0gdGl0bGVbMV07IH0NCiAgICAgICAgbGlzdC5hZGQoIFsgJ2EnLCBw

YmEgXS5jb25jYXQoIHBhcnNlX2lubGluZSggaW5uZXIucmVwbGFjZSggL14oXC4/

XHMqKS8sICcnICksIG9wdGlvbnMgKSApICk7DQogICAgICAgIGNvbnRpbnVlOw0K

ICAgICAgfQ0KDQogICAgICAvLyBubyBtYXRjaCwgbW92ZSBieSBhbGwgInVuaW50

ZXJlc3RpbmciIGNoYXJzDQogICAgICBtID0gLyhbYS16QS1aMC05LC4nOl0rfFsg

XGZcclx0XHZceEEwXHUyMDI4XHUyMDI5XSt8W15cMF0pLy5leGVjKCBzcmMgKTsN

CiAgICAgIGlmICggbSApIHsNCiAgICAgICAgbGlzdC5hZGQoIG1bMF0gKTsNCiAg

ICAgIH0NCiAgICAgIHNyYy5hZHZhbmNlKCBtID8gbVswXS5sZW5ndGggfHwgMSA6

IDEgKTsNCg0KICAgIH0NCiAgICB3aGlsZSAoIHNyYy52YWx1ZU9mKCkgKTsNCg0K

ICAgIHJldHVybiBsaXN0LmdldCgpLm1hcCggcGFyc2VfZ2x5cGhzICk7DQogIH0N

Cg0KDQogIC8qIGJsb2NrIHBhcnNlciAqLw0KDQogIGZ1bmN0aW9uIHBhcnNlX2Js

b2NrcyAoIHNyYywgb3B0aW9ucyApIHsNCg0KICAgIHZhciBsaXN0ID0gYnVpbGRl

cigpDQogICAgICAsIHBhcmFncmFwaCA9IGZ1bmN0aW9uICggcywgdGFnLCBwYmEs

IGxpbmVicmVhayApIHsNCiAgICAgICAgICB0YWcgPSB0YWcgfHwgJ3AnOw0KICAg

ICAgICAgIHZhciBvdXQgPSBbXTsNCiAgICAgICAgICBzLnNwbGl0KCAvKD86XHI/

XG4pezIsfS8gKS5mb3JFYWNoKGZ1bmN0aW9uKCBiaXQsIGkgKSB7DQogICAgICAg

ICAgICBpZiAoIHRhZyA9PT0gJ3AnICYmIC9eXHMvLnRlc3QoIGJpdCApICkgew0K

ICAgICAgICAgICAgICAvLyBuby1wYXJhZ3JhcGhzDQogICAgICAgICAgICAgIC8v

IFdURj86IFdoeSBkb2VzIFRleHRpbGUgbm90IGFsbG93IGxpbmVicmVha3MgaW4g

c3BhY2VkIGxpbmVzDQogICAgICAgICAgICAgIGJpdCA9IGJpdC5yZXBsYWNlKCAv

XHI/XG5bXHQgXS9nLCAnICcgKS50cmltKCk7DQogICAgICAgICAgICAgIG91dCA9

IG91dC5jb25jYXQoIHBhcnNlX2lubGluZSggYml0LCBvcHRpb25zICkgKTsNCiAg

ICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICBp

ZiAoIGxpbmVicmVhayAmJiBpICkgeyBvdXQucHVzaCggbGluZWJyZWFrICk7IH0N

CiAgICAgICAgICAgICAgb3V0LnB1c2goIHBiYSA/IFsgdGFnLCBwYmEgXS5jb25j

YXQoIHBhcnNlX2lubGluZSggYml0LCBvcHRpb25zICkgKQ0KICAgICAgICAgICAg

ICAgICAgICAgICAgICAgIDogWyB0YWcgICAgICBdLmNvbmNhdCggcGFyc2VfaW5s

aW5lKCBiaXQsIG9wdGlvbnMgKSApICk7DQogICAgICAgICAgICB9DQogICAgICAg

ICAgfSk7DQogICAgICAgICAgcmV0dXJuIG91dDsNCiAgICAgICAgfQ0KICAgICAg

LCBsaW5rX3JlZnMgPSB7fQ0KICAgICAgLCBtDQogICAgICA7DQogICAgc3JjID0g

cmliYm9uKCBzcmMucmVwbGFjZSggL14oICpccj9cbikrLywgJycgKSApOw0KDQog

ICAgLy8gbG9vcA0KICAgIHdoaWxlICggc3JjLnZhbHVlT2YoKSApIHsNCiAgICAg

IHNyYy5zYXZlKCk7DQoNCiAgICAgIC8vIGxpbmtfcmVmIC0tIHRoaXMgZ29lcyBm

aXJzdCBiZWNhdXNlIGl0IHNob3VsZG4ndCB0cmlnZ2VyIGEgbGluZWJyZWFrDQog

ICAgICBpZiAoIChtID0gcmVfbGlua19yZWYuZXhlYyggc3JjICkpICkgew0KICAg

ICAgICBzcmMuYWR2YW5jZSggbVswXSApOw0KICAgICAgICBsaW5rX3JlZnNbIG1b

MV0gXSA9IG1bMl07DQogICAgICAgIGNvbnRpbnVlOw0KICAgICAgfQ0KDQogICAg

ICAvLyBhZGQgbGluZWJyZWFrDQogICAgICBsaXN0LmxpbmVicmVhaygpOw0KDQog

ICAgICAvLyBuYW1lZCBibG9jaw0KICAgICAgaWYgKCAobSA9IHJlX2Jsb2NrLmV4

ZWMoIHNyYyApKSApIHsNCiAgICAgICAgc3JjLmFkdmFuY2UoIG1bMF0gKTsNCiAg

ICAgICAgdmFyIGJsb2NrX3R5cGUgPSBtWzBdDQogICAgICAgICAgLCBwYmEgPSBw

YXJzZV9hdHRyKCBzcmMsIGJsb2NrX3R5cGUgKQ0KICAgICAgICAgIDsNCiAgICAg

ICAgaWYgKCBwYmEgKSB7DQogICAgICAgICAgc3JjLmFkdmFuY2UoIHBiYVswXSAp

Ow0KICAgICAgICAgIHBiYSA9IHBiYVsxXTsNCiAgICAgICAgfQ0KICAgICAgICBp

ZiAoIChtID0gL15cLihcLj8pKD86XHN8KD89OikpLy5leGVjKCBzcmMgKSkgKSB7

DQogICAgICAgICAgLy8gRklYTUU6IHRoaXMgd2hvbGUgY29weV9wYmEgc2VlbXMg

cmF0aGVyIHN0cmFuZ2U/DQogICAgICAgICAgLy8gc2x1cnAgcmVzdCBvZiBibG9j

aw0KICAgICAgICAgIHZhciBleHRlbmRlZCA9ICEhbVsxXTsNCiAgICAgICAgICBt

ID0gKCBleHRlbmRlZCA/IHJlX2Jsb2NrX2V4dGVuZGVkIDogcmVfYmxvY2tfbm9y

bWFsICkuZXhlYyggc3JjLmFkdmFuY2UoIG1bMF0gKSApOw0KICAgICAgICAgIHNy

Yy5hZHZhbmNlKCBtWzBdICk7DQogICAgICAgICAgLy8gYnEgfCBiYyB8IG5vdGV4

dGlsZSB8IHByZSB8IGgjIHwgZm4jIHwgcCB8ICMjIw0KICAgICAgICAgIGlmICgg

YmxvY2tfdHlwZSA9PT0gJ2JxJyApIHsNCiAgICAgICAgICAgIHZhciBjaXRlLCBp

bm5lciA9IG1bMV07DQogICAgICAgICAgICBpZiAoIChtID0gL146KFxTKylccysv

LmV4ZWMoIGlubmVyICkpICkgew0KICAgICAgICAgICAgICBpZiAoICFwYmEgKSB7

IHBiYSA9IHt9OyB9DQogICAgICAgICAgICAgIHBiYS5jaXRlID0gbVsxXTsNCiAg

ICAgICAgICAgICAgaW5uZXIgPSBpbm5lci5zbGljZSggbVswXS5sZW5ndGggKTsN

CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC8vIFJlZENsb3RoIGFkZHMgYWxs

IGF0dHIgdG8gYm90aDogdGhpcyBpcyBiYWQgYmVjYXVzZSBpdCBwcm9kdWNlcyBk

dXBsaWNhdGUgSURzDQogICAgICAgICAgICBsaXN0LmFkZCggWyAnYmxvY2txdW90

ZScsIHBiYSwgJ1xuJyBdLmNvbmNhdCgNCiAgICAgICAgICAgICAgICAgICAgcGFy

YWdyYXBoKCBpbm5lciwgJ3AnLCBjb3B5X3BiYShwYmEsIHsgJ2NpdGUnOjEsICdp

ZCc6MSB9KSwgJ1xuJyApDQogICAgICAgICAgICAgICAgICApLmNvbmNhdChbJ1xu

J10pICk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UgaWYgKCBibG9ja190

eXBlID09PSAnYmMnICkgew0KICAgICAgICAgICAgdmFyIHN1Yl9wYmEgPSAoIHBi

YSApID8gY29weV9wYmEocGJhLCB7ICdpZCc6MSB9KSA6IG51bGw7DQogICAgICAg

ICAgICBsaXN0LmFkZCggWyAncHJlJywgcGJhLCAoIHN1Yl9wYmEgPyBbICdjb2Rl

Jywgc3ViX3BiYSwgbVsxXSBdIDogWyAnY29kZScsIG1bMV0gXSApIF0gKTsNCiAg

ICAgICAgICB9DQogICAgICAgICAgZWxzZSBpZiAoIGJsb2NrX3R5cGUgPT09ICdu

b3RleHRpbGUnICkgew0KICAgICAgICAgICAgbGlzdC5tZXJnZSggcGFyc2VfaHRt

bCggbVsxXSApICk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UgaWYgKCBi

bG9ja190eXBlID09PSAnIyMjJyApIHsNCiAgICAgICAgICAgIC8vIGlnbm9yZSB0

aGUgaW5zaWRlcw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIGlmICggYmxv

Y2tfdHlwZSA9PT0gJ3ByZScgKSB7DQogICAgICAgICAgICAvLyBJIGRpc2FncmVl

IHdpdGggUmVkQ2xvdGgsIGJ1dCBhZ3JlZSB3aXRoIFBIUCBoZXJlOg0KICAgICAg

ICAgICAgLy8gInByZShmb28jYmFyKS4uIGxpbmUxXG5cbmxpbmUyIiBwcmV2ZW50

cyBtdWx0aWxpbmUgcHJlZm9ybWF0IGJsb2Nrcw0KICAgICAgICAgICAgLy8gLi4u

d2hpY2ggc2VlbXMgbGlrZSB0aGUgd2hvbGUgcG9pbnQgb2YgaGF2aW5nIGFuIGV4

dGVuZGVkIHByZSBibG9jaz8NCiAgICAgICAgICAgIGxpc3QuYWRkKCBbICdwcmUn

LCBwYmEsIG1bMV0gXSApOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIGlm

ICggcmVfZm9vdG5vdGVfZGVmLnRlc3QoIGJsb2NrX3R5cGUgKSApIHsgLy8gZm9v

dG5vdGUNCiAgICAgICAgICAgIC8vIE5lZWQgdG8gYmUgY2FyZWZ1bDogUmVkQ2xv

dGggZmFpbHMgImZuMShmb28jbSkuIGZvb3Rub3RlIiAtLSBpdCBjb25mdXNlcyB0

aGUgSUQNCiAgICAgICAgICAgIHZhciBmbmlkID0gYmxvY2tfdHlwZS5yZXBsYWNl

KCAvXEQrL2csICcnICk7DQogICAgICAgICAgICBpZiAoICFwYmEgKSB7IHBiYSA9

IHt9OyB9DQogICAgICAgICAgICBwYmFbJ2NsYXNzJ10gPSAoIHBiYVsnY2xhc3Mn

XSA/IHBiYVsnY2xhc3MnXSArICcgJyA6ICcnICkgKyAnZm9vdG5vdGUnOw0KICAg

ICAgICAgICAgcGJhWydpZCddID0gJ2ZuJyArIGZuaWQ7DQogICAgICAgICAgICBs

aXN0LmFkZCggWyAicCIsIHBiYSwgWyAnYScsIHsgJ2hyZWYnOiAnI2ZucicgKyBm

bmlkIH0sIFsgJ3N1cCcsIGZuaWQgXSBdLCAnICcgXS5jb25jYXQoIHBhcnNlX2lu

bGluZSggbVsxXSwgb3B0aW9ucyApICkgKTsNCiAgICAgICAgICB9DQogICAgICAg

ICAgZWxzZSB7IC8vIGhlYWRpbmcgfCBwYXJhZ3JhcGgNCiAgICAgICAgICAgIGxp

c3QubWVyZ2UoIHBhcmFncmFwaCggbVsxXSwgYmxvY2tfdHlwZSwgcGJhLCAnXG4n

ICkgKTsNCiAgICAgICAgICB9DQogICAgICAgICAgY29udGludWU7DQogICAgICAg

IH0NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgc3JjLmxvYWQoKTsNCiAgICAg

ICAgfQ0KICAgICAgfQ0KDQogICAgICAvLyBIVE1MIGNvbW1lbnQNCiAgICAgIGlm

ICggKG0gPSByZV9odG1sX2NvbW1lbnQuZXhlYyggc3JjICkpICkgew0KICAgICAg

ICBzcmMuYWR2YW5jZSggbVswXSArICgvKD86XHMqXG4rKSsvLmV4ZWMoIHNyYyAp

IHx8IFtdKVswXSApOw0KICAgICAgICBsaXN0LmFkZCggWyAnIScsIG1bMV0gXSAp

Ow0KICAgICAgICBjb250aW51ZTsNCiAgICAgIH0NCg0KICAgICAgLy8gYmxvY2sg

SFRNTA0KICAgICAgaWYgKCAobSA9IHJlX2h0bWxfdGFnX2Jsb2NrLmV4ZWMoIHNy

YyApKSApIHsNCiAgICAgICAgdmFyIHRhZyAgICA9IG1bMV0NCiAgICAgICAgICAs

IHNpbmdsZSA9IG1bM10gfHwgdGFnIGluIGh0bWxfc2luZ2xldG9ucw0KICAgICAg

ICAgICwgdGFpbCAgID0gbVs0XQ0KICAgICAgICAgIDsNCiAgICAgICAgLy8gVW5z

dXJwcmlzaW5nbHksIGFsbCBUZXh0aWxlIGltcGxlbWVudGF0aW9ucyBJIGhhdmUg

dGVzdGVkIGhhdmUgdHJvdWJsZSBwYXJzaW5nIHNpbXBsZSBIVE1MOg0KICAgICAg

ICAvLw0KICAgICAgICAvLyAgICAiPGRpdj5hXG48ZGl2PmJcbjwvZGl2PmNcbjwv

ZGl2PmQiDQogICAgICAgIC8vDQogICAgICAgIC8vIEkgc2ltcGx5IG1hdGNoIHRo

ZW0gaGVyZSBhcyB0aGVyZSBpcyBubyB3YXkgYW55b25lIGlzIHVzaW5nIG5lc3Rl

ZCBIVE1MIHRvZGF5LCBvciBpZiB0aGV5DQogICAgICAgIC8vIGFyZSwgdGhlbiB0

aGlzIHdpbGwgYXQgbGVhc3Qgb3V0cHV0IGxlc3MgYnJva2VuIEhUTUwgYXMgcmVk

dW5kYW50IHRhZ3Mgd2lsbCBnZXQgcXVvdGVkLg0KDQogICAgICAgIC8vIElzIGJs

b2NrIHRhZz8gLi4uDQogICAgICAgIGlmICggdGFnIGluIGFsbG93ZWRfYmxvY2t0

YWdzICkgew0KICAgICAgICAgIHNyYy5hZHZhbmNlKCBtWzBdICk7DQoNCiAgICAg

ICAgICB2YXIgZWxlbWVudCA9IFsgdGFnIF07DQoNCiAgICAgICAgICBpZiAoIG1b

Ml0gKSB7DQogICAgICAgICAgICBlbGVtZW50LnB1c2goIHBhcnNlX2h0bWxfYXR0

ciggbVsyXSApICk7DQogICAgICAgICAgfQ0KDQogICAgICAgICAgaWYgKCBzaW5n

bGUgKSB7IC8vIHNpbmdsZSB0YWcNCiAgICAgICAgICAgIC8vIGxldCB1cyBhZGQg

dGhlIGVsZW1lbnQgYW5kIGNvbnRpbnVlIG91ciBxdWVzdC4uLg0KICAgICAgICAg

ICAgbGlzdC5hZGQoIGVsZW1lbnQgKTsNCiAgICAgICAgICAgIGNvbnRpbnVlOw0K

ICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIHsgLy8gYmxvY2sNCg0KICAgICAg

ICAgICAgLy8gZ3VscCB1cCB0aGUgcmVzdCBvZiB0aGlzIGJsb2NrLi4uDQogICAg

ICAgICAgICB2YXIgcmVfZW5kX3RhZyA9IHJlLmNvbXBpbGUoICJeKC4qPykoXFxz

KikoPC8iICsgdGFnICsgIlxccyo+KShcXHMqKSIsICdzJyApOw0KICAgICAgICAg

ICAgaWYgKCAobSA9IHJlX2VuZF90YWcuZXhlYyggc3JjICkpICkgew0KICAgICAg

ICAgICAgICBzcmMuYWR2YW5jZSggbVswXSApOw0KICAgICAgICAgICAgICBpZiAo

IHRhZyA9PT0gJ3ByZScgKSB7DQogICAgICAgICAgICAgICAgZWxlbWVudC5wdXNo

KCB0YWlsICk7DQogICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQuY29u

Y2F0KCBwYXJzZV9odG1sKCBtWzFdLnJlcGxhY2UoIC8oXHI/XG4pKyQvLCAnJyAp

LCB7ICdjb2RlJzogMSB9ICkgKTsNCiAgICAgICAgICAgICAgICBpZiAoIG1bMl0g

KSB7IGVsZW1lbnQucHVzaCggbVsyXSApOyB9DQogICAgICAgICAgICAgICAgbGlz

dC5hZGQoIGVsZW1lbnQgKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg

ICBlbHNlIGlmICggdGFnID09PSAnbm90ZXh0aWxlJyApIHsNCiAgICAgICAgICAg

ICAgICBlbGVtZW50ID0gcGFyc2VfaHRtbCggbVsxXS50cmltKCkgKTsNCiAgICAg

ICAgICAgICAgICBsaXN0Lm1lcmdlKCBlbGVtZW50ICk7DQogICAgICAgICAgICAg

IH0NCiAgICAgICAgICAgICAgZWxzZSBpZiAoIHRhZyA9PT0gJ3NjcmlwdCcgfHwg

dGFnID09PSAnbm9zY3JpcHQnICkgew0KICAgICAgICAgICAgICAgIC8vZWxlbWVu

dCA9IHBhcnNlX2h0bWwoIG1bMV0udHJpbSgpICk7DQogICAgICAgICAgICAgICAg

ZWxlbWVudC5wdXNoKCB0YWlsICsgbVsxXSApOw0KICAgICAgICAgICAgICAgIGxp

c3QuYWRkKCBlbGVtZW50ICk7DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAg

ICAgZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gVGhlc2Ugc3RyYW5nZSAoYW5k

IHVubmVjZXNzYXJ5KSBsaW5lYnJlYWsgdGVzdHMgYXJlIGhlcmUgdG8gZ2V0IHRo

ZQ0KICAgICAgICAgICAgICAgIC8vIHRlc3RzIHdvcmtpbmcgcGVyZmVjdGx5LiBJ

biByZWFsaXR5LCB0aGlzIGRvZXNuJ3QgbWF0dGVyIG9uZSBiaXQuDQogICAgICAg

ICAgICAgICAgaWYgKCAvXG4vLnRlc3QoIHRhaWwgKSApIHsgZWxlbWVudC5wdXNo

KCAnXG4nICk7IH0NCiAgICAgICAgICAgICAgICBpZiAoIC9cbi8udGVzdCggbVsx

XSApICApIHsNCiAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LmNv

bmNhdCggcGFyc2VfYmxvY2tzKCBtWzFdLCBvcHRpb25zICkgKTsNCiAgICAgICAg

ICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAg

ICAgICBlbGVtZW50ID0gZWxlbWVudC5jb25jYXQoIHBhcnNlX2lubGluZSggbVsx

XS5yZXBsYWNlKCAvXiArLywgJycgKSwgb3B0aW9ucyApICk7DQogICAgICAgICAg

ICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICggL1xuLy50ZXN0KCBtWzJdICkg

KSB7IGVsZW1lbnQucHVzaCggJ1xuJyApOyB9DQoNCiAgICAgICAgICAgICAgICBs

aXN0LmFkZCggZWxlbWVudCApOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAg

ICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLyplbHNl

IHsNCiAgICAgICAgICAgICAgLy8gZW5kIHRhZyBpcyBtaXNzaW5nLCB0cmVhdCB0

YWcgYXMgbm9ybWFsIHRleHQuLi4NCiAgICAgICAgICAgIH0qLw0KICAgICAgICAg

IH0NCiAgICAgICAgfQ0KICAgICAgICBzcmMubG9hZCgpOw0KICAgICAgfQ0KDQog

ICAgICAvLyBydWxlcg0KICAgICAgaWYgKCAobSA9IHJlX3J1bGVyLmV4ZWMoIHNy

YyApKSApIHsNCiAgICAgICAgc3JjLmFkdmFuY2UoIG1bMF0gKTsNCiAgICAgICAg

bGlzdC5hZGQoIFsgJ2hyJyBdICk7DQogICAgICAgIGNvbnRpbnVlOw0KICAgICAg

fQ0KDQogICAgICAvLyBsaXN0DQogICAgICBpZiAoIChtID0gcmVfbGlzdC5leGVj

KCBzcmMgKSkgKSB7DQogICAgICAgIHNyYy5hZHZhbmNlKCBtWzBdICk7DQogICAg

ICAgIGxpc3QuYWRkKCBwYXJzZV9saXN0KCBtWzBdLCBvcHRpb25zICkgKTsNCiAg

ICAgICAgY29udGludWU7DQogICAgICB9DQoNCiAgICAgIC8vIGRlZmluaXRpb24g

bGlzdA0KICAgICAgaWYgKCAobSA9IHJlX2RlZmxpc3QuZXhlYyggc3JjICkpICkg

ew0KICAgICAgICBzcmMuYWR2YW5jZSggbVswXSApOw0KICAgICAgICBsaXN0LmFk

ZCggcGFyc2VfZGVmbGlzdCggbVswXSwgb3B0aW9ucyApICk7DQogICAgICAgIGNv

bnRpbnVlOw0KICAgICAgfQ0KDQogICAgICAvLyB0YWJsZQ0KICAgICAgaWYgKCAo

bSA9IHJlX3RhYmxlLmV4ZWMoIHNyYyApKSApIHsNCiAgICAgICAgc3JjLmFkdmFu

Y2UoIG1bMF0gKTsNCiAgICAgICAgbGlzdC5hZGQoIHBhcnNlX3RhYmxlKCBtWzFd

LCBvcHRpb25zICkgKTsNCiAgICAgICAgY29udGludWU7DQogICAgICB9DQoNCiAg

ICAgIC8vIHBhcmFncmFwaA0KICAgICAgbSA9IHJlX2Jsb2NrX25vcm1hbC5leGVj

KCBzcmMgKTsNCiAgICAgIGxpc3QubWVyZ2UoIHBhcmFncmFwaCggbVsxXSwgJ3An

LCB1bmRlZmluZWQsICJcbiIgKSApOw0KICAgICAgc3JjLmFkdmFuY2UoIG1bMF0g

KTsNCg0KICAgIH0NCg0KICAgIHJldHVybiBsaXN0LmdldCgpLm1hcCggZml4X2xp

bmtzLCBsaW5rX3JlZnMgKTsNCiAgfQ0KDQoNCiAgLy8gcmVjdXJzZSB0aGUgdHJl

ZSBhbmQgc3dhcCBvdXQgYW55ICJocmVmIiBhdHRyaWJ1dGVzDQogIGZ1bmN0aW9u

IGZpeF9saW5rcyAoIGpzb25tbCApIHsNCiAgICBpZiAoIF9pc0FycmF5KCBqc29u

bWwgKSApIHsNCiAgICAgIGlmICgganNvbm1sWzBdID09PSAnYScgKSB7IC8vIGZv

dW5kIGEgbGluaw0KICAgICAgICB2YXIgYXR0ciA9IGpzb25tbFsxXTsNCiAgICAg

ICAgaWYgKCB0eXBlb2YgYXR0ciA9PT0gIm9iamVjdCIgJiYgJ2hyZWYnIGluIGF0

dHIgJiYgYXR0ci5ocmVmIGluIHRoaXMgKSB7DQogICAgICAgICAgYXR0ci5ocmVm

ID0gdGhpc1sgYXR0ci5ocmVmIF07DQogICAgICAgIH0NCiAgICAgIH0NCiAgICAg

IGZvciAodmFyIGk9MSxsPWpzb25tbC5sZW5ndGg7IGk8bDsgaSsrKSB7DQogICAg

ICAgIGlmICggX2lzQXJyYXkoIGpzb25tbFtpXSApICkgew0KICAgICAgICAgIGZp

eF9saW5rcy5jYWxsKCB0aGlzLCBqc29ubWxbaV0gKTsNCiAgICAgICAgfQ0KICAg

ICAgfQ0KICAgIH0NCiAgICByZXR1cm4ganNvbm1sOw0KICB9DQoNCg0KDQogIC8q

IGV4cG9zZWQgKi8NCg0KICBmdW5jdGlvbiB0ZXh0aWxlICggdHh0LCBvcHQgKSB7

DQogICAgLy8gZ2V0IGEgdGhyb3ctYXdheSBjb3B5IG9mIG9wdGlvbnMNCiAgICBv

cHQgPSBtZXJnZSggbWVyZ2UoIHt9LCB0ZXh0aWxlLmRlZmF1bHRzICksIG9wdCB8

fCB7fSApOw0KICAgIC8vIHJ1biB0aGUgY29udmVydGVyDQogICAgcmV0dXJuIHBh

cnNlX2Jsb2NrcyggdHh0LCBvcHQgKS5tYXAoIEpTT05NTC50b0hUTUwgKS5qb2lu

KCAnJyApOw0KICB9DQoNCiAgLy8gb3B0aW9ucw0KICB0ZXh0aWxlLmRlZmF1bHRz

ID0gew0KICAgICdicmVha3MnOiB0cnVlICAgLy8gc2luZ2xlLWxpbmUgbGluZWJy

ZWFrcyBhcmUgY29udmVydGVkIHRvIDxicj4gYnkgZGVmYXVsdA0KICB9Ow0KICB0

ZXh0aWxlLnNldE9wdGlvbnMgPSB0ZXh0aWxlLnNldG9wdGlvbnMgPSBmdW5jdGlv

biAoIG9wdCApIHsNCiAgICBtZXJnZSggdGV4dGlsZS5kZWZhdWx0cywgb3B0ICk7

DQogICAgcmV0dXJuIHRoaXM7DQogIH07DQoNCg0KICB0ZXh0aWxlLnBhcnNlID0g

dGV4dGlsZS5jb252ZXJ0ID0gdGV4dGlsZTsNCiAgdGV4dGlsZS5odG1sX3BhcnNl

ciA9IHBhcnNlX2h0bWw7DQogIHRleHRpbGUuanNvbm1sID0gZnVuY3Rpb24gKCB0

eHQsIG9wdCApIHsNCiAgICAvLyBnZXQgYSB0aHJvdy1hd2F5IGNvcHkgb2Ygb3B0

aW9ucw0KICAgIG9wdCA9IG1lcmdlKCBtZXJnZSgge30sIHRleHRpbGUuZGVmYXVs

dHMgKSwgb3B0IHx8IHt9ICk7DQogICAgLy8gcGFyc2UgYW5kIHJldHVybiB0cmVl

DQogICAgcmV0dXJuIFsgJ2h0bWwnIF0uY29uY2F0KCBwYXJzZV9ibG9ja3MoIHR4

dCwgb3B0ICkgKTsNCiAgfTsNCiAgdGV4dGlsZS5zZXJpYWxpemUgPSBKU09OTUwu

dG9IVE1MOw0KDQogIGlmICggdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcg

JiYgbW9kdWxlLmV4cG9ydHMgKSB7DQogICAgbW9kdWxlLmV4cG9ydHMgPSB0ZXh0

aWxlOw0KICB9DQogIGVsc2Ugew0KICAgIHRoaXMudGV4dGlsZSA9IHRleHRpbGU7

DQogIH0NCg0KDQp9KS5jYWxsKGZ1bmN0aW9uKCkgew0KICByZXR1cm4gdGhpcyB8

fCAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiBnbG9i

YWwpOw0KfSgpKTsNCg==}
}