PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+DQo8aHRtbCBsYW5nPSJqYSI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVNoaWZ0X0pJUyI+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVN0eWxlLVR5cGUiIGNvbnRlbnQ9InRleHQvY3NzIj4NCjxsaW5rIHJlbD0idXAiIHRpdGxlPSJGYXRGcyIgaHJlZj0iLi4vMDBpbmRleF9qLmh0bWwiPg0KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9jc3Nfai5jc3MiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIiB0aXRsZT0iRUxNIERlZmF1bHQiPg0KPHRpdGxlPkZhdEZzIC0gZl9yZWFkZGlyPC90aXRsZT4NCjwvaGVhZD4NCg0KPGJvZHk+DQoNCjxkaXYgY2xhc3M9InBhcmEiPg0KPGgyPmZfcmVhZGRpcjwvaDI+DQo8cD6DZoNCg4yDToNng4qNgJbagvCTx4Ldj2+CtYLcgrc8L3A+DQo8cHJlPg0KRlJFU1VMVCBmX3JlYWRkaXIgKA0KICBESVIqIDxlbT5EaXJPYmplY3Q8L2VtPiwgICAgLyogg2aDQoOMg06DZ4OKgUWDdYNXg0aDToNnjVyRopHMgtaCzIN8g0ODk4NeICovDQogIEZJTElORk8qIDxlbT5GaWxlSW5mbzwvZW0+ICAvKiCDdINAg0ODi4/ulfGNXJGikcyC1oLMg3yDQ4OTg14gKi8NCik7DQo8L3ByZT4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJwYXJhIj4NCjxoND6I+JCUPC9oND4NCjxkbCBjbGFzcz0icGFyIj4NCjxkdD5EaXJPYmplY3Q8L2R0Pg0KPGRkPoNmg0KDjINOg2eDioFFg0mDdYNXg0aDToNnjVyRopHMgtaCzIN8g0ODk4NegvCOd5LogrWC3IK3gUI8L2RkPg0KPGR0PkZpbGVJbmZvPC9kdD4NCjxkZD6Tx4Ldj2+CtYK9g2aDQoOMg06DZ4OKjYCW2oLwimmUW4K3gumDdINAg0ODi4/ulfGNXJGikcyC1oLMg3yDQ4OTg16C8I53kuiCtYLcgreBQjwvZGQ+DQo8L2RsPg0KPC9kaXY+DQoNCg0KPGRpdiBjbGFzcz0icGFyYSI+DQo8aDQ+lt+C6JJsPC9oND4NCjxkbCBjbGFzcz0icmV0Ij4NCjxkdD5GUl9PSyAoMCk8L2R0Pg0KPGRkPpCzj+2PSZe5gUI8L2RkPg0KPGR0PkZSX05PVF9SRUFEWTwvZHQ+DQo8ZGQ+g4GDZoNCg0GCqoNag2KDZ4KzguqCxIKigsiCooLIgseBQZWol52DaIOJg0ODdYKqk66N7JVzlFyP85HUgUI8L2RkPg0KPGR0PkZSX0RJU0tfRVJSPC9kdD4NCjxkZD6DZoNCg1iDToFFg0eDiYFbgsmC5oLpjriUc4FCPC9kZD4NCjxkdD5GUl9JTlRfRVJSPC9kdD4NCjxkZD6Vc5CzgshGQVSNXJGigtyCvYLNk+CVlINHg4mBW4LJguaC6Y64lHOBQjwvZGQ+DQo8ZHQ+RlJfSU5WQUxJRF9PQkpFQ1Q8L2R0Pg0KPGRkPpazjPiCyINmg0KDjINOg2eDioFFg0mDdYNXg0aDToNngUI8L2RkPg0KPC9kbD4NCjwvZGl2Pg0KDQoNCjxkaXYgY2xhc3M9InBhcmEiPg0KPGg0PonwkOA8L2g0Pg0KPHA+g2aDQoOMg06DZ4OKjYCW2oLwj4eOn5PHgt2Pb4K1gtyCt4FCgrGCzIrWkJSC8IxKguiV1IK1jsCNc4K3gumCsYLGgsmC5oLog2aDQoOMg06DZ4OKgsyRU4LEgsyNgJbagvCTx4Ldj2+Ct4KxgsaCqoLFgquC3IK3gUKRU4LEgsyNgJbagvCTx4Ldj2+CtYFBk8eC3Y9vgreNgJbagqqC4IKklrOCooLGgquCzYFBPHR0PmZfbmFtZVtdPC90dD6DgYOTg2+CyYNrg4uVto6al/GCqpXUgrOC6oLcgreBQoN7g4qDhYFbg4CWvILNk8eC3Y9vgreCxoKrgsmK/ILEgueC6oFBjLuC6oLpgrGCxoLNgqCC6ILcgrmC8YFCIi4igUEiLi4igs2BQZGKkc6DcINYgqqXTIz4gsiCxoKrKDx0dD5fRlNfUlBBVEggPT0gMTwvdHQ+KYLJgsyC3Yy7guqC3IK3gUKTvoLnguqC6YN0g0CDQ4OLj+6V8YLMj9qN14LJgsKCooLEgs0gPHR0PkZJTElORk88L3R0Po1ckaKRzILwjlGPxoK1gsSCrYK+grOCooFCRmlsZUluZm+CyYNrg4uBRYN8g0ODk4NegvCOd5LogreC6YLGgUGCu4LMg2aDQoOMg06DZ4OKgsyDioFbg2iBRYNDg5ODZoNig06DWILwiqqCq5bfgrWC3IK3gUI8L3A+DQo8cD5MRk6LQJRcgqqXTIz4gsiOnoLNgUFmX3JlYWRkaXKK1pCUgsyMxILRj2+CtYLJkOaXp4LBgsRGSUxJTkZPjVyRopHMgsw8dHQ+bGZuYW1lPC90dD6Cxjx0dD5sZnNpemU8L3R0PoKql0yM+ILIkmyCxY+JivqJu4KzguqCxIKigsiCr4Lqgs6CyILogtyCuYLxgUI8dHQ+bGZuYW1lPC90dD6CzUxGToLwimmUW4K3gumDb4Nig3SDQILFgUE8dHQ+bGZzaXplPC90dD6CzYK7gsyDb4Nig3SDQIFFg1SDQ4NZKJW2jpqQlCmCxYK3gUKOn4LMj/CMj4LJiOqCwoLFguCKWZOWgreC6Y/qjYeCzYFBTEZOimmUW4Nvg2KDdINAgsmDa4OLlbaOmpfxgqqV1IKzguqC3IK3gUI8L3A+DQo8dWw+DQo8bGk+gruCzINmg0KDjINOg2eDio2AltqCyUxGToKqkbaN3YK1gsiCooFCPC9saT4NCjxsaT5MRk6CzJK3grOCyZHOgrWCxExGTopplFuDb4Nig3SDQILcgr2CzUxGTpGAjeyDb4Nig3SDQILMg1SDQ4NZgqqVc49claqBQjwvbGk+DQo8bGk+TEZOgslPRU2DUoFbg2iCyZG2jd2CtYLIgqKVto6agqqK3ILcguqCxIKigumBQihVbmljb2RlIEFQSYLFgs2CyIKigsaCqyk8L2xpPg0KPC91bD4NCjxwPoLcgr2BQTx0dD5sZm5hbWU8L3R0PoLJg2uDi4FFg3yDQ4OTg16C8I53kuiCtYK9j+qNh4LNgUFMRk6CyYrWgrWCxIm9guCV1IKzguqC3IK5gvGBQkxGToKqkbaN3YK1gsiCooLGgquCzYFBPHR0PmZfbmFtZVtdPC90dD6DgYOTg2+CzFNGToLJQVNDSUmJcI+slbaOmoKqityC3ILqgumP6o2HgqqCoILogtyCt4FCPC9wPg0KPC9kaXY+DQoNCg0KPGRpdiBjbGFzcz0icGFyYSI+DQo8aDQ+kc6Jno/ulfE8L2g0Pg0KPHA+PHR0Pl9GU19NSU5JTUlaRSAmbHQ7PSAxPC90dD6CzILGgquCyY5nl3CJwpRcgsWCt4FCPC9wPg0KPC9kaXY+DQoNCg0KPGRpdiBjbGFzcz0icGFyYSI+DQo8aDQ+jmeXcJfhPC9oND4NCjxwcmU+DQpGUkVTVUxUIHNjYW5fZmlsZXMgKGNoYXIqIHBhdGgpDQp7DQogICAgRlJFU1VMVCByZXM7DQogICAgRklMSU5GTyBmbm87DQogICAgRElSIGRpcjsNCiAgICBpbnQgaTsNCiAgICBjaGFyICpmbjsNCiNpZiBfVVNFX0xGTg0KICAgIHN0YXRpYyBjaGFyIGxmbltfTUFYX0xGTiAqIChfREYxUyA/IDIgOiAxKSArIDFdOw0KICAgIGZuby5sZm5hbWUgPSBsZm47DQogICAgZm5vLmxmc2l6ZSA9IHNpemVvZihsZm4pOw0KI2VuZGlmDQoNCg0KICAgIHJlcyA9IGZfb3BlbmRpcigmYW1wO2RpciwgcGF0aCk7DQogICAgaWYgKHJlcyA9PSBGUl9PSykgew0KICAgICAgICBpID0gc3RybGVuKHBhdGgpOw0KICAgICAgICBmb3IgKDs7KSB7DQogICAgICAgICAgICByZXMgPSBmX3JlYWRkaXIoJmFtcDtkaXIsICZhbXA7Zm5vKTsNCiAgICAgICAgICAgIGlmIChyZXMgIT0gRlJfT0sgfHwgZm5vLmZuYW1lWzBdID09IDApIGJyZWFrOw0KICAgICAgICAgICAgaWYgKGZuby5mbmFtZVswXSA9PSAnLicpIGNvbnRpbnVlOw0KI2lmIF9VU0VfTEZODQogICAgICAgICAgICBmbiA9ICpmbm8ubGZuYW1lID8gZm5vLmxmbmFtZSA6IGZuby5mbmFtZTsNCiNlbHNlDQogICAgICAgICAgICBmbiA9IGZuby5mbmFtZTsNCiNlbmRpZg0KICAgICAgICAgICAgaWYgKGZuby5mYXR0cmliICZhbXA7IEFNX0RJUikgew0KICAgICAgICAgICAgICAgIHNwcmludGYoJmFtcDtwYXRoW2ldLCAiLyVzIiwgZm4pOw0KICAgICAgICAgICAgICAgIHJlcyA9IHNjYW5fZmlsZXMocGF0aCk7DQogICAgICAgICAgICAgICAgaWYgKHJlcyAhPSBGUl9PSykgYnJlYWs7DQogICAgICAgICAgICAgICAgcGF0aFtpXSA9IDA7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHByaW50ZigiJXMvJXNcbiIsIHBhdGgsIGZuKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHJldHVybiByZXM7DQp9DQo8L3ByZT4NCjwvZGl2Pg0KDQoNCjxkaXYgY2xhc3M9InBhcmEiPg0KPGg0Po5Rj8Y8L2g0Pg0KPHA+PHR0PjxhIGhyZWY9Im9wZW5kaXIuaHRtbCI+Zl9vcGVuZGlyPC9hPiwgPGEgaHJlZj0ic3RhdC5odG1sIj5mX3N0YXQ8L2E+LCA8YSBocmVmPSJzZmlsZWluZm8uaHRtbCI+RklMSU5GTzwvYT4sIDxhIGhyZWY9InNkaXIuaHRtbCI+RElSPC9hPjwvdHQ+PC9wPg0KPC9kaXY+DQoNCjxwIGNsYXNzPSJmb290Ij48YSBocmVmPSIuLi8wMGluZGV4X2ouaHRtbCI+lt+C6TwvYT48L3A+DQo8L2JvZHk+DQo8L2h0bWw+DQo=