f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAACYDQAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHBuZzsKcGtncGF0aCBpbWFnZS9wbmc7CnByaW9yaXR5IDk7CmltcG9ydCBidWZpbyBidWZpbyAiYnVmaW8iOwppbXBvcnQgemxpYiBjb21wcmVzcy96bGliICJjb21wcmVzcy96bGliIjsKaW1wb3J0IGJpbmFyeSBlbmNvZGluZy9iaW5hcnkgImVuY29kaW5nL2JpbmFyeSI7CmltcG9ydCBmbXQgZm10ICJmbXQiOwppbXBvcnQgaGFzaCBoYXNoICJoYXNoIjsKaW1wb3J0IGNyYzMyIGhhc2gvY3JjMzIgImhhc2gvY3JjMzIiOwppbXBvcnQgaW1hZ2UgaW1hZ2UgImltYWdlIjsKaW1wb3J0IGNvbG9yIGltYWdlL2NvbG9yICJpbWFnZS9jb2xvciI7CmltcG9ydCBpbyBpbyAiaW8iOwppbXBvcnQgc3RyY29udiBzdHJjb252ICJzdHJjb252IjsKaW5pdCBwbmcgaW1hZ2VfcG5nLi5pbXBvcnQgOSBjb2xvciBpbWFnZV9jb2xvci4uaW1wb3J0IDEgbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHVuaWNvZGUgdW5pY29kZS4uaW1wb3J0IDEgc3RyY29udiBzdHJjb252Li5pbXBvcnQgMiBzeW5jIHN5bmMuLmltcG9ydCAyIGlvIGlvLi5pbXBvcnQgMyByZWZsZWN0IHJlZmxlY3QuLmltcG9ydCAzIHN5c2NhbGwgc3lzY2FsbC4uaW1wb3J0IDMgYmluYXJ5IGVuY29kaW5nX2JpbmFyeS4uaW1wb3J0IDQgYnl0ZXMgYnl0ZXMuLmltcG9ydCA0IHRpbWUgdGltZS4uaW1wb3J0IDQgYnVmaW8gYnVmaW8uLmltcG9ydCA1IGNyYzMyIGhhc2hfY3JjMzIuLmltcG9ydCA1IG9zIG9zLi5pbXBvcnQgNSBmbXQgZm10Li5pbXBvcnQgNiBpbWFnZSBpbWFnZS4uaW1wb3J0IDYgZmxhdGUgY29tcHJlc3NfZmxhdGUuLmltcG9ydCA3IHpsaWIgY29tcHJlc3NfemxpYi4uaW1wb3J0IDg7CmNvbnN0IEJlc3RDb21wcmVzc2lvbiA8dHlwZSAxICJDb21wcmVzc2lvbkxldmVsIiA8dHlwZSAtMTE+PiA9IC0zIDsKY29uc3QgQmVzdFNwZWVkIDx0eXBlIDE+ID0gLTIgOwp0eXBlIDx0eXBlIDE+OwpmdW5jIERlY29kZSAociA8dHlwZSAyICJpby5SZWFkZXIiIDx0eXBlIDMgaW50ZXJmYWNlIHsgUmVhZCAocCA8dHlwZSA0IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PikgKD8gPHR5cGUgNSAiaW1hZ2UuSW1hZ2UiIDx0eXBlIDYgaW50ZXJmYWNlIHsgQ29sb3JNb2RlbCAoKSA8dHlwZSA3ICJpbWFnZS9jb2xvci5Nb2RlbCIgPHR5cGUgOCBpbnRlcmZhY2UgeyBDb252ZXJ0IChjIDx0eXBlIDkgImltYWdlL2NvbG9yLkNvbG9yIiA8dHlwZSAxMCBpbnRlcmZhY2UgeyBSR0JBICgpIChyIDx0eXBlIC03PiwgZyA8dHlwZSAtNz4sIGIgPHR5cGUgLTc+LCBhIDx0eXBlIC03Pik7IH0+PikgPHR5cGUgOT47IH0+PjsgQm91bmRzICgpIDx0eXBlIDExICJpbWFnZS5SZWN0YW5nbGUiIDx0eXBlIDEyIHN0cnVjdCB7IE1pbiA8dHlwZSAxMyAiaW1hZ2UuUG9pbnQiIDx0eXBlIDE0IHN0cnVjdCB7IFggPHR5cGUgLTExPjsgWSA8dHlwZSAtMTE+OyB9PgogZnVuYyAocCA8dHlwZSAxMz4pIE1vZCAociA8dHlwZSAxMT4pIDx0eXBlIDEzPjsKIGZ1bmMgKHAgPHR5cGUgMTM+KSBTdWIgKHEgPHR5cGUgMTM+KSA8dHlwZSAxMz47CiBmdW5jIChwIDx0eXBlIDEzPikgRGl2IChrIDx0eXBlIC0xMT4pIDx0eXBlIDEzPjsKIGZ1bmMgKHAgPHR5cGUgMTM+KSBFcSAocSA8dHlwZSAxMz4pIDx0eXBlIC0xNT47CiBmdW5jIChwIDx0eXBlIDEzPikgTXVsIChrIDx0eXBlIC0xMT4pIDx0eXBlIDEzPjsKIGZ1bmMgKHAgPHR5cGUgMTM+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHAgPHR5cGUgMTM+KSBJbiAociA8dHlwZSAxMT4pIDx0eXBlIC0xNT47CiBmdW5jIChwIDx0eXBlIDEzPikgQWRkIChxIDx0eXBlIDEzPikgPHR5cGUgMTM+Owo+OyBNYXggPHR5cGUgMTM+OyB9PgogZnVuYyAociA8dHlwZSAxMT4pIEluc2V0IChuIDx0eXBlIC0xMT4pIDx0eXBlIDExPjsKIGZ1bmMgKHIgPHR5cGUgMTE+KSBPdmVybGFwcyAocyA8dHlwZSAxMT4pIDx0eXBlIC0xNT47CiBmdW5jIChyIDx0eXBlIDExPikgRHkgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHIgPHR5cGUgMTE+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHIgPHR5cGUgMTE+KSBBZGQgKHAgPHR5cGUgMTM+KSA8dHlwZSAxMT47CiBmdW5jIChyIDx0eXBlIDExPikgQ2Fub24gKCkgPHR5cGUgMTE+OwogZnVuYyAociA8dHlwZSAxMT4pIEVxIChzIDx0eXBlIDExPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHIgPHR5cGUgMTE+KSBTdWIgKHAgPHR5cGUgMTM+KSA8dHlwZSAxMT47CiBmdW5jIChyIDx0eXBlIDExPikgSW50ZXJzZWN0IChzIDx0eXBlIDExPikgPHR5cGUgMTE+OwogZnVuYyAociA8dHlwZSAxMT4pIFNpemUgKCkgPHR5cGUgMTM+OwogZnVuYyAociA8dHlwZSAxMT4pIEluIChzIDx0eXBlIDExPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHIgPHR5cGUgMTE+KSBEeCAoKSA8dHlwZSAtMTE+OwogZnVuYyAociA8dHlwZSAxMT4pIEVtcHR5ICgpIDx0eXBlIC0xNT47CiBmdW5jIChyIDx0eXBlIDExPikgVW5pb24gKHMgPHR5cGUgMTE+KSA8dHlwZSAxMT47Cj47IEF0ICh4IDx0eXBlIC0xMT4sIHkgPHR5cGUgLTExPikgPHR5cGUgOT47IH0+PiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBEZWNvZGVDb25maWcgKHIgPHR5cGUgMj4pICg/IDx0eXBlIDE1ICJpbWFnZS5Db25maWciIDx0eXBlIDE2IHN0cnVjdCB7IENvbG9yTW9kZWwgPHR5cGUgNz47IFdpZHRoIDx0eXBlIC0xMT47IEhlaWdodCA8dHlwZSAtMTE+OyB9Pj4sID8gPHR5cGUgLTE5Pik7CmNvbnN0IERlZmF1bHRDb21wcmVzc2lvbiA8dHlwZSAxPiA9IDAgOwpmdW5jIEVuY29kZSAodyA8dHlwZSAxNyAiaW8uV3JpdGVyIiA8dHlwZSAxOCBpbnRlcmZhY2UgeyBXcml0ZSAocCA8dHlwZSAxOSBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj4sIG0gPHR5cGUgNT4pIDx0eXBlIC0xOT47CnR5cGUgPHR5cGUgMjAgIkVuY29kZXIiIDx0eXBlIDIxIHN0cnVjdCB7IENvbXByZXNzaW9uTGV2ZWwgPHR5cGUgMT47IH0+CiBmdW5jIChlbmMgPHR5cGUgMjIgKjx0eXBlIDIwPj4pIEVuY29kZSAodyA8dHlwZSAxNz4sIG0gPHR5cGUgNT4pIDx0eXBlIC0xOT47Cj47CnR5cGUgPHR5cGUgMjMgIkZvcm1hdEVycm9yIiA8dHlwZSAtMTY+CiBmdW5jIChlIDx0eXBlIDIzPikgRXJyb3IgKCkgPHR5cGUgLTE2PjsKPjsKY29uc3QgTm9Db21wcmVzc2lvbiA8dHlwZSAxPiA9IC0xIDsKdHlwZSA8dHlwZSAyNCAiVW5zdXBwb3J0ZWRFcnJvciIgPHR5cGUgLTE2PgogZnVuYyAoZSA8dHlwZSAyND4pIEVycm9yICgpIDx0eXBlIC0xNj47Cj47CmNoZWNrc3VtIDZFNDU3NTNDQTBFRUExOUJCREZGOTg5MjVFQzQ1MDAzNDEyMTVFNzA7CgAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5nb19leHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAABAAAAAAAAAAAAAAA0AAAAGg0AAAAAAAAAAAAAAQAAAAAAAAARAAAAAwAAAAAAAAAAAAAATg0AACYAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAHQNAAAgAAAABAAAAAIAAAAEAAAAEAAAAAkAAAADAAAAAAAAAAAAAACUDQAAAQAAAAAAAAAAAAAAAQAAAAAAAAA=