PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+DQo8aHRtbCBsYW5nPSJqYSI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVNoaWZ0X0pJUyI+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVN0eWxlLVR5cGUiIGNvbnRlbnQ9InRleHQvY3NzIj4NCjxsaW5rIHJlbD0idXAiIHRpdGxlPSJGYXRGcyIgaHJlZj0iLi4vMDBpbmRleF9qLmh0bWwiPg0KPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWZsYW5nPSJlbiIgdGl0bGU9IkVuZ2xpc2giIGhyZWY9Ii4uL2VuL3JlYWRkaXIuaHRtbCI+DQo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2Nzc19qLmNzcyIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iIHRpdGxlPSJFTE0gRGVmYXVsdCI+DQo8dGl0bGU+RmF0RnMgLSBmX3JlYWRkaXI8L3RpdGxlPg0KPC9oZWFkPg0KDQo8Ym9keT4NCg0KPGRpdiBjbGFzcz0icGFyYSI+DQo8aDI+Zl9yZWFkZGlyPC9oMj4NCjxwPoNmg0KDjINOg2eDio2AltqC8JPHgt2Pb4K1gtyCtzwvcD4NCjxwcmU+DQpGUkVTVUxUIGZfcmVhZGRpciAoDQogIERJUiogPGVtPkRpck9iamVjdDwvZW0+LCAgICA8c3BhbiBjbGFzcz0iYyI+Lyogg2aDQoOMg06DZ4OKgUWDdYNXg0aDToNnjVyRopHMgtaCzIN8g0ODk4NeICovPC9zcGFuPg0KICBGSUxJTkZPKiA8ZW0+RmlsZUluZm88L2VtPiAgPHNwYW4gY2xhc3M9ImMiPi8qIIN0g0CDQ4OLj+6V8Y1ckaKRzILWgsyDfINDg5ODXiAqLzwvc3Bhbj4NCik7DQo8L3ByZT4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJwYXJhIj4NCjxoND6I+JCUPC9oND4NCjxkbCBjbGFzcz0icGFyIj4NCjxkdD5EaXJPYmplY3Q8L2R0Pg0KPGRkPpdMjPiCyINmg0KDjINOg2eDioFFg0mDdYNXg0aDToNnjVyRopHMgtaCzIN8g0ODk4NegvCOd5LogrWC3IK3gUI8L2RkPg0KPGR0PkZpbGVJbmZvPC9kdD4NCjxkZD6Tx4Ldj2+CtYK9g2aDQoOMg06DZ4OKjYCW2oLwimmUW4K3gumDdINAg0ODi4/ulfGNXJGikcyC1oLMg3yDQ4OTg16C8I53kuiCtYLcgreBQjwvZGQ+DQo8L2RsPg0KPC9kaXY+DQoNCg0KPGRpdiBjbGFzcz0icGFyYSI+DQo8aDQ+lt+C6JJsPC9oND4NCjxkbCBjbGFzcz0icmV0Ij4NCjxkdD5GUl9PSyAoMCk8L2R0Pg0KPGRkPpCzj+2PSZe5gUI8L2RkPg0KPGR0PkZSX05PVF9SRUFEWTwvZHQ+DQo8ZGQ+g4GDZoNCg0GCqoNag2KDZ4KzguqCxIKigsiCooLIgseBQZWol52DaIOJg0ODdYKqk66N7JVzlFyP85HUgUI8L2RkPg0KPGR0PkZSX0RJU0tfRVJSPC9kdD4NCjxkZD6DZoNCg1iDToFFg0eDiYFbgsmC5oLpjriUc4FCPC9kZD4NCjxkdD5GUl9JTlRfRVJSPC9kdD4NCjxkZD6Vc5CzgshGQVSNXJGigtyCvYLNk+CVlINHg4mBW4LJguaC6Y64lHOBQjwvZGQ+DQo8ZHQ+RlJfSU5WQUxJRF9PQkpFQ1Q8L2R0Pg0KPGRkPpazjPiCyINmg0KDjINOg2eDioFFg0mDdYNXg0aDToNngUI8L2RkPg0KPC9kbD4NCjwvZGl2Pg0KDQoNCjxkaXYgY2xhc3M9InBhcmEiPg0KPGg0PonwkOA8L2g0Pg0KPHA+g2aDQoOMg06DZ4OKjYCW2oLwj4eOn5PHgt2Pb4K1gtyCt4FCgrGCzIrWkJSC8IxKguiV1IK1jsCNc4K3gumCsYLGgsmC5oLog2aDQoOMg06DZ4OKgsyRU4LEgsyNgJbagvCTx4Ldj2+Ct4KxgsaCqoLFgquC3IK3gUKRU4LEgsyNgJbagvCTx4Ldj2+CtYFBk8eC3Y9vgreNgJbagqqC4IKklrOCooLGgquCzYFBPHR0PmZfbmFtZVtdPC90dD6DgYOTg2+CyYNrg4uVto6al/GCqpXUgrOC6oLcgreBQoN7g4qDhYFbg4CBRYOJg3iDi4LNk8eC3Y9vgreCxoKrgsmK/ILEgueC6oFBjLuC6oLpgrGCxoLNgqCC6ILcgrmC8YFCIi4igUEiLi4igs2BQZGKkc6DcINYgqqXTIz4gsiCxoKrKDx0dD5fRlNfUlBBVEggPT0gMTwvdHQ+KYLJgsyC3Yy7guqC3IK3gUKTvoLnguqC6YN0g0CDQ4OLj+6V8YLMj9qN14LJgsKCooLEgs0gPHR0PkZJTElORk88L3R0Po1ckaKRzILwjlGPxoK1gsSCrYK+grOCooFCRmlsZUluZm+CyYNrg4uBRYN8g0ODk4NegvCOd5LogreC6YLGgUGCu4LMg2aDQoOMg06DZ4OKgsyDioFbg2iBRYNDg5ODZoNig06DWILwiqqCq5bfgrWC3IK3gUI8L3A+DQo8cD5MRk6LQJRcgqqXTIz4gsiOnoLNgUFmX3JlYWRkaXKK1pCUgsyMxILRj2+CtYLJkOaXp4LBgsRGSUxJTkZPjVyRopHMgsw8dHQ+bGZuYW1lPC90dD6Cxjx0dD5sZnNpemU8L3R0PoKql0yM+ILIkmyCxY+JivqJu4KzguqCxIKigsiCr4Lqgs6CyILogtyCuYLxgUI8dHQ+bGZuYW1lPC90dD6CzUxGToLwimmUW4K3gumDb4Nig3SDQILFgUE8dHQ+bGZzaXplPC90dD6CzYK7gsyDb4Nig3SDQIFFg1SDQ4NZKFRDSEFSKYLFgreBQo6fgsyP8IyPgsmI6oLCgsWC4IpZk5aCt4Lpj+qNh4LNgUFMRk6KaZRbg2+DYoN0g0CCyYNrg4uVto6al/GCqpXUgrOC6oLcgreBQjwvcD4NCjx1bD4NCjxsaT6Cu4LMg2aDQoOMg06DZ4OKjYCW2oLJTEZOgqqRto3dgrWCyIKigUI8L2xpPg0KPGxpPkxGToLMkreCs4LJkc6CtYLETEZOimmUW4Nvg2KDdINAgtyCvYLNTEZOkYCN7INvg2KDdINAgsyDVINDg1mCqpVzj1yVqoFCPC9saT4NCjxsaT5MRk6CyYy7jd2CzE9FTYNSgVuDaILJkbaN3YK1gsiCopW2jpqCqorcgtyC6oLEgqKC6YFCKFVuaWNvZGUgQVBJgsWCzYLIgqKCxoKrKTwvbGk+DQo8L3VsPg0KPHA+gtyCvYFBPHR0PmxmbmFtZTwvdHQ+gsmDa4OLgUWDfINDg5ODXoLwjneS6IK1gr2P6o2Hgs2BQUxGToLJitaCtYLEib2C4JXUgrOC6oLcgrmC8YFCTEZOgqqRto3dgrWCyIKigsaCq4LNgUE8dHQ+Zl9uYW1lW108L3R0PoOBg5ODb4LMU0ZOgslBU0NJSYlwj6yVto6agqqK3ILcguqC6Y/qjYeCqoKgguiC3IK3gUI8L3A+DQo8L2Rpdj4NCg0KDQo8ZGl2IGNsYXNzPSJwYXJhIj4NCjxoND6Rzomej+6V8TwvaDQ+DQo8cD48dHQ+X0ZTX01JTklNSVpFICZsdDs9IDE8L3R0PoLMgsaCq4LJjmeXcInClFyCxYK3gUI8L3A+DQo8L2Rpdj4NCg0KDQo8ZGl2IGNsYXNzPSJwYXJhIj4NCjxoND6OZ5dwl+E8L2g0Pg0KPHByZT4NCkZSRVNVTFQgc2Nhbl9maWxlcyAoY2hhciogcGF0aCkNCnsNCiAgICBGUkVTVUxUIHJlczsNCiAgICBGSUxJTkZPIGZubzsNCiAgICBESVIgZGlyOw0KICAgIGludCBpOw0KICAgIGNoYXIgKmZuOw0KI2lmIF9VU0VfTEZODQogICAgc3RhdGljIGNoYXIgbGZuW19NQVhfTEZOICogKF9ERjFTID8gMiA6IDEpICsgMV07DQogICAgZm5vLmxmbmFtZSA9IGxmbjsNCiAgICBmbm8ubGZzaXplID0gc2l6ZW9mKGxmbik7DQojZW5kaWYNCg0KDQogICAgcmVzID0gZl9vcGVuZGlyKCZhbXA7ZGlyLCBwYXRoKTsNCiAgICBpZiAocmVzID09IEZSX09LKSB7DQogICAgICAgIGkgPSBzdHJsZW4ocGF0aCk7DQogICAgICAgIGZvciAoOzspIHsNCiAgICAgICAgICAgIHJlcyA9IGZfcmVhZGRpcigmYW1wO2RpciwgJmFtcDtmbm8pOw0KICAgICAgICAgICAgaWYgKHJlcyAhPSBGUl9PSyB8fCBmbm8uZm5hbWVbMF0gPT0gMCkgYnJlYWs7DQogICAgICAgICAgICBpZiAoZm5vLmZuYW1lWzBdID09ICcuJykgY29udGludWU7DQojaWYgX1VTRV9MRk4NCiAgICAgICAgICAgIGZuID0gKmZuby5sZm5hbWUgPyBmbm8ubGZuYW1lIDogZm5vLmZuYW1lOw0KI2Vsc2UNCiAgICAgICAgICAgIGZuID0gZm5vLmZuYW1lOw0KI2VuZGlmDQogICAgICAgICAgICBpZiAoZm5vLmZhdHRyaWIgJmFtcDsgQU1fRElSKSB7DQogICAgICAgICAgICAgICAgc3ByaW50ZigmYW1wO3BhdGhbaV0sICIvJXMiLCBmbik7DQogICAgICAgICAgICAgICAgcmVzID0gc2Nhbl9maWxlcyhwYXRoKTsNCiAgICAgICAgICAgICAgICBpZiAocmVzICE9IEZSX09LKSBicmVhazsNCiAgICAgICAgICAgICAgICBwYXRoW2ldID0gMDsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgcHJpbnRmKCIlcy8lc1xuIiwgcGF0aCwgZm4pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgcmV0dXJuIHJlczsNCn0NCjwvcHJlPg0KPC9kaXY+DQoNCg0KPGRpdiBjbGFzcz0icGFyYSI+DQo8aDQ+jlGPxjwvaDQ+DQo8cD48dHQ+PGEgaHJlZj0ib3BlbmRpci5odG1sIj5mX29wZW5kaXI8L2E+LCA8YSBocmVmPSJzdGF0Lmh0bWwiPmZfc3RhdDwvYT4sIDxhIGhyZWY9InNmaWxlaW5mby5odG1sIj5GSUxJTkZPPC9hPiwgPGEgaHJlZj0ic2Rpci5odG1sIj5ESVI8L2E+PC90dD48L3A+DQo8L2Rpdj4NCg0KPHAgY2xhc3M9ImZvb3QiPjxhIGhyZWY9Ii4uLzAwaW5kZXhfai5odG1sIj6W34LpPC9hPjwvcD4NCjwvYm9keT4NCjwvaHRtbD4NCg==