Z0UjAQAAYwAAAAAAAAAAAHkAAAAdAAAAAQAAAAAAAAAcAAAAAAAAAB0AAAAAAAAABAAAAAAAAAAFAAAAAAAAABkAAAAAAAAABgAAAAAAAAAlAAAAAAAAAAcAAAAAAAAAHwAAAAAAAAAIAAAAAAAAAAABAAAAAAAAPgEAAAAAAAAKAAAAAAAAAAsAAAAAAAAADAAAAAAAAAABAQAAAAAAAAMBAAAAAAAADAEAAAAAAAANAQAAAAAAAA4BAAAAAAAADwEAAAAAAAARAQAAAAAAABMBAAAAAAAAHwEAAAAAAAAyAQAAAAAAADMBAAAAAAAANQEAAAAAAAAoAAAAAAAAAHQLAAAAAAAAAAAAAAAAAAAcAAAAAAAAAGwAAAAAAAAAcAAAAAAAAAB0AAAAAAAAAHwAAAAAAAAA//////////+EAAAAAAAAABgFAAAAAAAAhAUAAAAAAAAsBwAAAAAAAJSZAQAAAAAAEKUBAAAAAACgqAEAAAAAALCpAQAAAAAAQLgBAAAAAAA4wgEAAAAAAPDGAQAAAAAA2MoBAAAAAACQzgEAAAAAAGDUAQAAAAAAgN4BAAAAAADw4QEAAAAAAPDsAQAAAAAAYPIBAAAAAAAI9QEAAAAAALj4AQAAAAAASPwBAAAAAACYmQEAAAAAABwAAAAAAAAAUAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAlAQAAAAAAABsAAAAAAAAAKgBAAAAAAAAaJIBAAAAAAAEAAAAAAAAAIwDAAAAAAAAEAEAAAAAAACMDgAAAAAAAPgJAAAAAAAAuAQAAAAAAADkAwAAAAAAALgDAAAAAAAA0AUAAAAAAAAcCgAAAAAAAGwDAAAAAAAA/AoAAAAAAABwBQAAAAAAAKgCAAAAAAAArQMAAAAAAACQAwAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMi4yLXAwMDEgb3IgYWJvdmUAAAAAAAAAAAAEAAQAzQAdADIyLjQxLjAyOQAAAAAAAAAyMi40MS4wMjkAAAAAAAAAbGludXhfcmhlbDQwX2djYzQ0eF8zMiBnY2NfNC40LjMAAAAAAAAAABAEACClAAAAZPvQWQAAAABl+9BZAAAAAEkAAABhAAAADAAAAAAAAAANAAAAAAAAAA4AAAAAAAAADwAAAAAAAAAQAAAAAAAAABEAAAAAAAAAEgAAAAAAAAATAAAAAAAAABQAAAAAAAAAFQAAAAAAAAAWAAAAAAAAABgAAAAAAAAAAQEAAAAAAAACAQAAAAAAAAMBAAAAAAAABAEAAAAAAAAFAQAAAAAAAAYBAAAAAAAABwEAAAAAAAAIAQAAAAAAAAkBAAAAAAAACgEAAAAAAAALAQAAAAAAAAwBAAAAAAAADQEAAAAAAAAOAQAAAAAAAA8BAAAAAAAAEAEAAAAAAAARAQAAAAAAABIBAAAAAAAAEwEAAAAAAAAUAQAAAAAAABUBAAAAAAAAFgEAAAAAAAAXAQAAAAAAABgBAAAAAAAAGQEAAAAAAAAaAQAAAAAAABsBAAAAAAAAHAEAAAAAAAAdAQAAAAAAAB4BAAAAAAAAHwEAAAAAAAAgAQAAAAAAACEBAAAAAAAAIgEAAAAAAAAjAQAAAAAAACQBAAAAAAAAJQEAAAAAAAAmAQAAAAAAACcBAAAAAAAAKAEAAAAAAAApAQAAAAAAACoBAAAAAAAAKwEAAAAAAAAsAQAAAAAAAC0BAAAAAAAALgEAAAAAAAAvAQAAAAAAADABAAAAAAAAMQEAAAAAAAAyAQAAAAAAADMBAAAAAAAANAEAAAAAAAA1AQAAAAAAADYBAAAAAAAANwEAAAAAAAA4AQAAAAAAADkBAAAAAAAAOgEAAAAAAAA7AQAAAAAAADwBAAAAAAAAPQEAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAEcAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASQAAAEoAAABLAAAATAAAAE0AAABOAAAATwAAAFAAAAD/////////////////////////////////////////////////////////////////////////////////////AAAAAAgAAAAAAAAAGgAAAAAAAAAbAAAAAAAAAD8BAAAAAAAAQAEAAAAAAAAmAAAAAAAAACcAAAAAAAAAQQEAAAAAAABCAQAAAAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAABAAAAAAAAAA0AQAAAAAAAAwAAAAKAAAAAAIAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAAAgEAAAAAAAACAgAAAAAAAAUAAAAAAACAEQAAAAAAAIA0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAABQAAAAAAAAAGAAAAAAAAAAoAAAAAAAAADQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAUAAAAAAAAA/////wAAAAABAAAAAAAAABEAAAAAAAAA/////wAAAAABAAAAAAAAAAEAAAAIAAAAAAAAAAAAAAD/////AAAAgAAAAIABAADAAQAAAAQAAAAdeQMAAQAAwAEAAAABAAAApgAAAGgDAAAiAAAAGwAAAFiSAQBSkgEAcHJvY2VkdXJlKChwY0dlbkNlbGwgdGNDZWxsVmlldyAiZCIpIAogICAgcHJvZygoZGlmZkxheWVyIGdhdGVMYXllciB3ZWxsTGF5ZXIgd2VsbG1pbldpZHRoIGRpZmZFeHQKCSAgICB3ZWxsRW5jRGlmZiB3ZWxsRW5jVGFwIHdlbGxMYXllcldpZHRoIGxhYmVsTGF5ZXIgbGFiZWxXaWR0aAoJICAgIGRpZmZJbXBsYW50IGRpZmZJbXBFbmMgZGlmZkNvcmVJbXBsYW50IGRpZmZDb3JlSW1wRW5jIHBvbHlJbXBsYW50CgkgICAgcG9seUltcFhFbmMgcG9seUltcFlFbmMgdmlhMU1pblNwYWNlIHZpYTJNaW5TcGFjZSBsYXllcjJNaW5TcGFjZQoJICAgIGxheWVyM01pblNwYWNlIHNuYXBHcmlkIGltcGxhbnQgdGFwTGF5ZXIgdGFwSW1wbGFudAoJICAgIHRhcEltcEVuYyBsb2RFbmFibGVkIHNvdXJjZUZpcnN0IHNoYXJlZERyYWluIHNoYXJlZFNvdXJjZQoJICAgIGxhc3RDb250YWN0IGZpcnN0Q29udGFjdCBnYXRlRXh0IGlkTGF5ZXJzVGFibGUgc3JjU2VjSWRMYXllcnNUYWJsZQoJICAgIGRyblNlY0lkTGF5ZXJzVGFibGUgaHNwaWNlTW9kZWwgc3JjT2Zmc2V0IGRybk9mZnNldCBtCgkgICAgbCB3IGdhdGV0b2dhdGVTcGFjaW5nIGdhdGVJbXBsYW50IG1hbnVhbExPRAoJICAgIHNhIHNiIHNkIGJ1dHRpbmdHYXRlc1NBIGJ1dHRpbmdHYXRlc1NCCgkgICAgTE9EQ29udGFjdE1hcFNTdHJhcHBlZCBMT0RDb250YWN0TWFwTkRTdHJhcHBlZCBub0NvbnRhY3RMT0Qgdm9sdGFnZUNob2ljZXMgc2VjSWRMYXllcnNUYWJsZQoJICAgIHdlbGxFbmNZRGlmZiB3ZWxsV2lkdGggaWRMYXllciBzcmNTZWNJZExheWVyIGRyblNlY0lkTGF5ZXIKCSAgICBnTmV0IHNOZXQgZE5ldCBjTmV0IG5ldEwKCSAgICBzZWNJZExheWVyIGNvbnRhY3RGIGNvbnRhY3RMIGNvbnRhY3REIGNvbnRhY3RTCgkgICAgY29udGFjdEZMZW5ndGggY29udGFjdExMZW5ndGggY29udGFjdERMZW5ndGggY29udGFjdFNMZW5ndGggdmlhMVhDcmRGCgkgICAgbGF5ZXIyWENyZEYgdmlhMlhDcmRGIGxheWVyM1hDcmRGIGxheWVyMVhDcmRGIHZpYTFYQ3JkTAoJICAgIGxheWVyMlhDcmRMIHZpYTJYQ3JkTCBsYXllcjNYQ3JkTCBsYXllcjFYQ3JkTCB2aWExWENyZFMKCSAgICBsYXllcjJYQ3JkUyB2aWEyWENyZFMgbGF5ZXIzWENyZFMgbGF5ZXIxWENyZFMgdmlhMVhDcmRECgkgICAgbGF5ZXIyWENyZEQgdmlhMlhDcmREIGxheWVyM1hDcmREIGxheWVyMVhDcmREIHZpYTFFbmNGCgkgICAgdmlhMkVuY0YgbGF5ZXIyRW5jRiBsYXllcjNFbmNGIHZpYTFFbmNMIHZpYTJFbmNMCgkgICAgbGF5ZXIyRW5jTCBsYXllcjNFbmNMIHZpYTFFbmNTIHZpYTJFbmNTIGxheWVyMkVuY1MKCSAgICBsYXllcjNFbmNTIHZpYTFFbmNEIHZpYTJFbmNEIGxheWVyMkVuY0QgbGF5ZXIzRW5jRAoJICAgIHZpYTFTcGFjZUZMIHZpYTFPZmZTZXRGTCB2aWEyU3BhY2VGTCB2aWEyT2ZmU2V0RkwgbGF5ZXIzU3BhY2VGTAoJICAgIGxheWVyM09mZlNldEZMIGxheWVyMlNwYWNlRkwgbGF5ZXIyT2ZmU2V0RkwgdmlhMVNwYWNlRlMgdmlhMU9mZlNldEZTCgkgICAgdmlhMlNwYWNlRlMgdmlhMk9mZlNldEZTIGxheWVyM1NwYWNlRlMgbGF5ZXIzT2ZmU2V0RlMgbGF5ZXIyU3BhY2VGUwoJICAgIGxheWVyMk9mZlNldEZTIHZpYTFTcGFjZUZEIHZpYTFPZmZTZXRGRCB2aWEyU3BhY2VGRCB2aWEyT2ZmU2V0RkQKCSAgICBsYXllcjNTcGFjZUZEIGxheWVyM09mZlNldEZEIGxheWVyMlNwYWNlRkQgbGF5ZXIyT2ZmU2V0RkQgdmlhMVNwYWNlTFMKCSAgICB2aWExT2ZmU2V0TFMgdmlhMlNwYWNlTFMgdmlhMk9mZlNldExTIGxheWVyM1NwYWNlTFMgbGF5ZXIzT2ZmU2V0TFMKCSAgICBsYXllcjJTcGFjZUxTIGxheWVyMk9mZlNldExTIHZpYTFTcGFjZUxEIHZpYTFPZmZTZXRMRCB2aWEyU3BhY2VMRAoJICAgIHZpYTJPZmZTZXRMRCBsYXllcjNTcGFjZUxEIGxheWVyM09mZlNldExEIGxheWVyMlNwYWNlTEQgbGF5ZXIyT2ZmU2V0TEQKCSAgICB2aWExU3BhY2VTRCB2aWExT2ZmU2V0U0QgdmlhMlNwYWNlU0QgdmlhMk9mZlNldFNEIGxheWVyM1NwYWNlU0QKCSAgICBsYXllcjNPZmZTZXRTRCBsYXllcjJTcGFjZVNEIGxheWVyMk9mZlNldFNEIG1heE9mZlNldCBvZmZzZXRTaWRlCgkgICAgbWluU3BhY2VPZmZTZXQgY29udGFjdEltcFBhcmFtIGNvbnRhY3RXZWxsUGFyYW0geDFDb29yZCB5MUNvb3JkCgkgICAgbGFzdFBZaVgxQ29vcmQgeTFQWWlDb29yZCB5MlBZaUNvb3JkIGlkTGF5ZXJzQ29vcmRUYWJsZSBsYXllckluZm8KCSAgICBsYXllckVuY3MgeDFJZENvb3JkIHkxSWRDb29yZCB4MklkQ29vcmQgeTJJZENvb3JkCgkgICAgbGF5ZXJOYW1lIGlkTGF5Q29vcmRzIHNlY0lkTGF5ZXJzQ29vcmRUYWJsZSBzZWNMYXllckluZm8gc2VjTGF5ZXJFbmNzCgkgICAgeDFTZWNJZENvb3JkIHkxU2VjSWRDb29yZCB4MlNlY0lkQ29vcmQgeTJTZWNJZENvb3JkIHNlY0xheWVyTmFtZQoJICAgIHNlY0lkTGF5Q29vcmRzIHdlbGxFbmNEaWZmWSB3ZWxsRW5jVGFwWSB3ZWxsRW5jRGlmZlggd2VsbEVuY1RhcFgKCSAgICBleHRlbnNpb24gb2Zmc2V0IGN1clRlcm1PZmZzZXQgbmV4dFRlcm1PZmZzZXQgY3VyVGVybVNoQ29uTGVuZ3RoCgkgICAgbmV4dFRlcm1TaENvbkxlbmd0aCBjb250YWN0SWQgcGFyYW1zIGluc3RQYXJhbXMgaW5zdAoJICAgIGlzU2luZ2xlU3RyYXBwZWQgaXNORFN0cmFwcGVkIHBhaXIgaW5uZXJDb250YWN0IGlubmVyQ29udGFjdElkCgkgICAgaW5uZXJDb250YWN0TGVuZ3RoIHZpYTFYQ3JkSW5uZXJDb24gbGF5ZXIyWENyZElubmVyQ29uIHZpYTJYQ3JkSW5uZXJDb24gbGF5ZXIzWENyZElubmVyQ29uCgkgICAgbGF5ZXIxWENyZElubmVyQ29uIHZpYTFFbmNJbm5lckNvbiB2aWEyRW5jSW5uZXJDb24gYXZhaWxhYmxlVmlhMVNwYWNlIHJlcXVpcmVkVmlhMVNwCgkgICAgYXZhaWxhYmxlVmlhMlNwYWNlIHJlcXVpcmVkVmlhMlNwIHJlcXVpcmVkU3BhY2Ugc3RyYXBwZWRDb250YWN0SWQgc3RyYXBwZWRDb250YWN0SW5zdAoJICAgIG91dGVyQ29udGFjdCBvdXRlckNvbnRhY3RJZCBvdXRlckluc3Qgb3V0ZXJDb250YWN0TGVuZ3RoIG1hc3RlcgoJICAgIGJCb3ggZGJpZCBwaW5pZCB4MURpZmZDb29yZCB4MVRhcENvb3JkCgkgICAgeTJEaWZmQ29vcmQgeTJUYXBDb29yZCB5MURpZmZDb29yZCB5MVRhcENvb3JkIHgxV2VsbENvb3JkCgkgICAgeTFXZWxsQ29vcmQgeTJXZWxsQ29vcmQgaWRFbmNYTCBpZEVuY1hSIGlkRW5jWQoJICAgIGxheWVyQ29vcmRzIHNlY0lkRW5jWEwgc2VjSWRFbmNYUiBzZWNJZEVuY1kgc2VjTGF5ZXJDb29yZHMKCSAgICBzaGFyZWRTcmNJZCBzaGFyZWREcm5JZCBuIHgxUFlpQ29vcmQgY3VycmVudENvbnRhY3QKCSAgICBjdXJyZW50TmV0IHgyRGlmZkNvb3JkIHgyVGFwQ29vcmQgb2xkeDFDb29yZCBkaWZmYkJveAoJICAgIHgyV2VsbENvb3JkIHdlbGxMYXllcl9Yb3JpZ2luIHdlbGxMYXllcl9Zb3JpZ2luIHdlbGxMYXllcl9YZW5kIHdlbGxMYXllcl9ZZW5kCgkgICAgRGlmZl93ZWxsX3dpZHRoCgkpIAoJaWYoIXRjQ2VsbFZpZXcgCgkgICAgcmV0dXJuKG5pbCkKCSkgCgkobG9kRW5hYmxlZCA9IHQpIAoJKHRhcEltcEVuYyA9IDAuMTMpIAoJKHRhcEltcGxhbnQgPSBsaXN0KCJwc2RtIiAiZHJhd2luZyIpKQoJKHRhcExheWVyID0gbGlzdCgidGFwIiAiZHJhd2luZyIpKSAKCShpbXBsYW50ID0gdCkgCgkobGF5ZXIzTWluU3BhY2UgPSAwLjE0KSAKCShsYXllcjJNaW5TcGFjZSA9IDAuMTcpIAoJKHZpYTJNaW5TcGFjZSA9IDAuMTkpCgkodmlhMU1pblNwYWNlID0gMC4xNykgCgkoZGlmZkltcEVuYyA9IDAuMTMpIAoJKGRpZmZJbXBsYW50ID0gbGlzdCgibnNkbSIgImRyYXdpbmciKSkgCgkobGFiZWxXaWR0aCA9IDAuMTUpIAoJKGRpZmZFeHQgPSAwLjI1KQoJKGdhdGVMYXllciA9IGxpc3QoInBvbHkiICJkcmF3aW5nIikpIAoJKGRpZmZMYXllciA9IGxpc3QoImRpZmYiICJkcmF3aW5nIikpIAoJKHdlbGxMYXllciA9IG5pbCkgCgkod2VsbG1pbldpZHRoID0gMC4wKSAKCSh3ZWxsRW5jRGlmZiA9IDAuMCkKCSh3ZWxsRW5jVGFwID0gMC4wKSAKCSh3ZWxsTGF5ZXJXaWR0aCA9IDAuMCkgCgkobGFiZWxMYXllciA9IGxpc3QoInRleHQiICJkcmF3aW5nIikpIAoJKGRpZmZDb3JlSW1wbGFudCA9IG5pbCkgCgkoZGlmZkNvcmVJbXBFbmMgPSAwLjApCgkocG9seUltcGxhbnQgPSBuaWwpIAoJKHBvbHlJbXBYRW5jID0gMC4wKSAKCShwb2x5SW1wWUVuYyA9IDAuMCkgCgkoc25hcEdyaWQgPSAwLjAwNSkgCgkodm9sdGFnZUNob2ljZXMgPSAoKHRjQ2VsbFZpZXd+PnBhcmFtZXRlcnMpfj52b2x0YWdlQ2hvaWNlcykpCglpZighbGlzdHAodm9sdGFnZUNob2ljZXMpIHRoZW4gCgkgICAgKHZvbHRhZ2VDaG9pY2VzID0gbGlzdCgibm9ybWFsIikpCgkpIAoJKG5vQ29udGFjdExPRCA9ICgodGNDZWxsVmlld34+cGFyYW1ldGVycyl+Pm5vQ29udGFjdExPRCkpIAoJaWYoIWZsb2F0cChub0NvbnRhY3RMT0QpIHRoZW4gCgkgICAgKG5vQ29udGFjdExPRCA9IDAuMjUpCgkpIAoJKExPRENvbnRhY3RNYXBORFN0cmFwcGVkID0gKCh0Y0NlbGxWaWV3fj5wYXJhbWV0ZXJzKX4+TE9EQ29udGFjdE1hcE5EU3RyYXBwZWQpKSAKCWlmKCFsaXN0cChMT0RDb250YWN0TWFwTkRTdHJhcHBlZCkgdGhlbiAKCSAgICAoTE9EQ29udGFjdE1hcE5EU3RyYXBwZWQgPSBsaXN0KCgiREZMMXNkIiAiREZMMXNkMiIpIAoJCSAgICAoIkRGTDFzZGYiICJERkwxc2QyIikgCgkJICAgICgiREZMMXNkMiIgIkRGTDFzZDIiKSAKCQkgICAgKCJERk0xc2QiICJERk0xc2QyIikgCgkJICAgICgiREZNMXNkMiIgIkRGTTFzZDIiKQoJCSAgICAoImh2REZMMXNkIiAiaHZERkwxc2QyIikgCgkJICAgICgiaHZERk0xc2QiICJodkRGTTFzZDIiKSAKCQkgICAgKCJodkRGTTFzZDIiICJodkRGTTFzZDIiKSAKCQkgICAgKCJodkRGTDFzZDIiICJodkRGTDFzZDIiKSAKCQkgICAgKCJERlRQTTFzMiIgIkRGTTFzZCIpCgkJICAgICgiREZUUEwxczIiICJERkwxc2QiKSAKCQkgICAgKCJodkRGVFBMMXMyIiAiaHZERkwxc2QiKSAKCQkgICAgKCJodkRGVFBNMXMyIiAiaHZERk0xc2QiKQoJCSkpCgkpCgkoTE9EQ29udGFjdE1hcFNTdHJhcHBlZCA9ICgodGNDZWxsVmlld34+cGFyYW1ldGVycyl+PkxPRENvbnRhY3RNYXBTU3RyYXBwZWQpKSAKCWlmKCFsaXN0cChMT0RDb250YWN0TWFwU1N0cmFwcGVkKSB0aGVuIAoJICAgIChMT0RDb250YWN0TWFwU1N0cmFwcGVkID0gbGlzdCgoIkRGVFBMMXMiICJERkwxc2QyIikgCgkJICAgICgiREZUUE0xcyIgIkRGTTFzZDIiKSAKCQkgICAgKCJodkRGVFBMMXMiICJodkRGTDFzZDIiKSAKCQkgICAgKCJodkRGVFBNMXMiICJodkRGTTFzZDIiKSAKCQkgICAgKCJERlRQTDFzdyIgIkRGTDFzZDIiKQoJCSAgICAoIkRGVFBNMXN3IiAiREZNMXNkMiIpCgkJKSkKCSkgCgkoYnV0dGluZ0dhdGVzU0IgPSAoKHRjQ2VsbFZpZXd+PnBhcmFtZXRlcnMpfj5idXR0aW5nR2F0ZXNTQikpIAoJaWYoIWZpeHAoYnV0dGluZ0dhdGVzU0IpIHRoZW4gCgkgICAgKGJ1dHRpbmdHYXRlc1NCID0gMCkKCSkgCgkoYnV0dGluZ0dhdGVzU0EgPSAoKHRjQ2VsbFZpZXd+PnBhcmFtZXRlcnMpfj5idXR0aW5nR2F0ZXNTQSkpCglpZighZml4cChidXR0aW5nR2F0ZXNTQSkgdGhlbiAKCSAgICAoYnV0dGluZ0dhdGVzU0EgPSAwKQoJKSAKCShzZCA9ICgodGNDZWxsVmlld34+cGFyYW1ldGVycyl+PnNkKSkgCglpZighZmxvYXRwKHNkKSB0aGVuIAoJICAgIChzZCA9IDAuMCkKCSkgCgkoc2IgPSAoKHRjQ2VsbFZpZXd+PnBhcmFtZXRlcnMpfj5zYikpIAoJaWYoIWZsb2F0cChzYikgdGhlbiAKCSAgICAoc2IgPSAwLjApCgkpCgkoc2EgPSAoKHRjQ2VsbFZpZXd+PnBhcmFtZXRlcnMpfj5zYSkpIAoJaWYoIWZsb2F0cChzYSkgdGhlbiAKCSAgICAoc2EgPSAwLjApCgkpIAoJKG1hbnVhbExPRCA9ICgodGNDZWxsVmlld34+cGFyYW1ldGVycyl+Pm1hbnVhbExPRCkpIAoJaWYoKG1hbnVhbExPRCA9PSAiRkFMU0UiKSB0aGVuIAoJICAgIChtYW51YWxMT0QgPSBuaWwpCgkpIAoJaWYoIXN0cmluZ3AobWFudWFsTE9EKSB0aGVuIAoJICAgIChtYW51YWxMT0QgPSAiRkFMU0UiKQoJKQoJKGdhdGVJbXBsYW50ID0gKCh0Y0NlbGxWaWV3fj5wYXJhbWV0ZXJzKX4+Z2F0ZUltcGxhbnQpKSAKCWlmKChnYXRlSW1wbGFudCA9PSAiRkFMU0UiKSB0aGVuIAoJICAgIChnYXRlSW1wbGFudCA9IG5pbCkKCSkgCglpZighc3RyaW5ncChnYXRlSW1wbGFudCkgdGhlbiAKCSAgICAoZ2F0ZUltcGxhbnQgPSAiRkFMU0UiKQoJKSAKCShnYXRldG9nYXRlU3BhY2luZyA9ICgodGNDZWxsVmlld34+cGFyYW1ldGVycyl+PmdhdGV0b2dhdGVTcGFjaW5nKSkgCglpZighZmxvYXRwKGdhdGV0b2dhdGVTcGFjaW5nKSB0aGVuIAoJICAgIChnYXRldG9nYXRlU3BhY2luZyA9IDAuMjEpCgkpCgkodyA9ICgodGNDZWxsVmlld34+cGFyYW1ldGVycyl+PncpKSAKCWlmKCFmbG9hdHAodykgdGhlbiAKCSAgICAodyA9IDAuNDIpCgkpIAoJKGwgPSAoKHRjQ2VsbFZpZXd+PnBhcmFtZXRlcnMpfj5sKSkgCglpZighZmxvYXRwKGwpIHRoZW4gCgkgICAgKGwgPSAwLjE1KQoJKSAKCShtID0gKCh0Y0NlbGxWaWV3fj5wYXJhbWV0ZXJzKX4+bSkpCglpZighZml4cChtKSB0aGVuIAoJICAgIChtID0gMSkKCSkgCgkoZHJuT2Zmc2V0ID0gKCh0Y0NlbGxWaWV3fj5wYXJhbWV0ZXJzKX4+ZHJuT2Zmc2V0KSkgCglpZighZmxvYXRwKGRybk9mZnNldCkgdGhlbiAKCSAgICAoZHJuT2Zmc2V0ID0gMC4wKQoJKSAKCShzcmNPZmZzZXQgPSAoKHRjQ2VsbFZpZXd+PnBhcmFtZXRlcnMpfj5zcmNPZmZzZXQpKSAKCWlmKCFmbG9hdHAoc3JjT2Zmc2V0KSB0aGVuIAoJICAgIChzcmNPZmZzZXQgPSAwLjApCgkpCgkoaHNwaWNlTW9kZWwgPSAoKHRjQ2VsbFZpZXd+PnBhcmFtZXRlcnMpfj5oc3BpY2VNb2RlbCkpIAoJaWYoKGhzcGljZU1vZGVsID09ICJGQUxTRSIpIHRoZW4gCgkgICAgKGhzcGljZU1vZGVsID0gbmlsKQoJKSAKCWlmKCFzdHJpbmdwKGhzcGljZU1vZGVsKSB0aGVuIAoJICAgIChoc3BpY2VNb2RlbCA9ICJuc2hvcnQiKQoJKSAKCShkcm5TZWNJZExheWVyc1RhYmxlID0gKCh0Y0NlbGxWaWV3fj5wYXJhbWV0ZXJzKX4+ZHJuU2VjSWRMYXllcnNUYWJsZSkpIAoJaWYoIWxpc3RwKGRyblNlY0lkTGF5ZXJzVGFibGUpIHRoZW4gCgkgICAgKGRyblNlY0lkTGF5ZXJzVGFibGUgPSBsaXN0KCgibm9uZSIgCgkJCSgwLjAgMC4wIDAuMCkKCQkgICAgKQoJCSkpCgkpCgkoc3JjU2VjSWRMYXllcnNUYWJsZSA9ICgodGNDZWxsVmlld34+cGFyYW1ldGVycyl+PnNyY1NlY0lkTGF5ZXJzVGFibGUpKSAKCWlmKCFsaXN0cChzcmNTZWNJZExheWVyc1RhYmxlKSB0aGVuIAoJICAgIChzcmNTZWNJZExheWVyc1RhYmxlID0gbGlzdCgoIm5vbmUiIAoJCQkoMC4wIDAuMCAwLjApCgkJICAgICkKCQkpKQoJKSAKCShpZExheWVyc1RhYmxlID0gKCh0Y0NlbGxWaWV3fj5wYXJhbWV0ZXJzKX4+aWRMYXllcnNUYWJsZSkpIAoJaWYoIWxpc3RwKGlkTGF5ZXJzVGFibGUpIHRoZW4gCgkgICAgKGlkTGF5ZXJzVGFibGUgPSBsaXN0KCgibm9uZSIgCgkJCSgwLjAgMC4wIDAuMCkKCQkgICAgKQoJCSkpCgkpIAoJKGdhdGVFeHQgPSAoKHRjQ2VsbFZpZXd+PnBhcmFtZXRlcnMpfj5nYXRlRXh0KSkKCWlmKCFmbG9hdHAoZ2F0ZUV4dCkgdGhlbiAKCSAgICAoZ2F0ZUV4dCA9IDAuMTMpCgkpIAoJKGZpcnN0Q29udGFjdCA9ICgodGNDZWxsVmlld34+cGFyYW1ldGVycyl+PmZpcnN0Q29udGFjdCkpIAoJaWYoKGZpcnN0Q29udGFjdCA9PSAiRkFMU0UiKSB0aGVuIAoJICAgIChmaXJzdENvbnRhY3QgPSBuaWwpCgkpIAoJaWYoIXN0cmluZ3AoZmlyc3RDb250YWN0KSB0aGVuIAoJICAgIChmaXJzdENvbnRhY3QgPSAiREZMMXNkIikKCSkgCgkobGFzdENvbnRhY3QgPSAoKHRjQ2VsbFZpZXd+PnBhcmFtZXRlcnMpfj5sYXN0Q29udGFjdCkpCglpZigobGFzdENvbnRhY3QgPT0gIkZBTFNFIikgdGhlbiAKCSAgICAobGFzdENvbnRhY3QgPSBuaWwpCgkpIAoJaWYoIXN0cmluZ3AobGFzdENvbnRhY3QpIHRoZW4gCgkgICAgKGxhc3RDb250YWN0ID0gIkRGTDFzZCIpCgkpIAoJKHNoYXJlZFNvdXJjZSA9ICgodGNDZWxsVmlld34+cGFyYW1ldGVycyl+PnNoYXJlZFNvdXJjZSkpIAoJaWYoKHNoYXJlZFNvdXJjZSA9PSAiRkFMU0UiKSB0aGVuIAoJICAgIChzaGFyZWRTb3VyY2UgPSBuaWwpCgkpIAoJaWYoIXN0cmluZ3Aoc2hhcmVkU291cmNlKSB0aGVuIAoJICAgIChzaGFyZWRTb3VyY2UgPSAiREZMMXNkMiIpCgkpCgkoc2hhcmVkRHJhaW4gPSAoKHRjQ2VsbFZpZXd+PnBhcmFtZXRlcnMpfj5zaGFyZWREcmFpbikpIAoJaWYoKHNoYXJlZERyYWluID09ICJGQUxTRSIpIHRoZW4gCgkgICAgKHNoYXJlZERyYWluID0gbmlsKQoJKSAKCWlmKCFzdHJpbmdwKHNoYXJlZERyYWluKSB0aGVuIAoJICAgIChzaGFyZWREcmFpbiA9ICJERkwxc2QyIikKCSkgCgkoc291cmNlRmlyc3QgPSAoKHRjQ2VsbFZpZXd+PnBhcmFtZXRlcnMpfj5zb3VyY2VGaXJzdCkpIAoJaWYoKHNvdXJjZUZpcnN0ID09ICJGQUxTRSIpIHRoZW4gCgkgICAgKHNvdXJjZUZpcnN0ID0gbmlsKQoJKQoJKHNlY0lkTGF5ZXJzVGFibGUgPSBsaXN0KGxpc3QoIm5vbmUiIAoJCSAgICBsaXN0KDAuMCAwLjAgMC4wKQoJCSkKCSAgICApKSAKCSh3ZWxsRW5jWURpZmYgPSAwLjApIAoJd2hlbigod2VsbExheWVyV2lkdGggIT0gMC4wKSAKCSAgICAod2VsbFdpZHRoID0gKChtYXgod2VsbEVuY0RpZmYgd2VsbEVuY1RhcCkgKiAyKSArIHcpKSAKCSAgICBpZigod2VsbFdpZHRoIDwgd2VsbExheWVyV2lkdGgpIHRoZW4gCgkJKHdlbGxFbmNZRGlmZiA9IGFicygobWF4KHdlbGxFbmNEaWZmIHdlbGxFbmNUYXApIC0gCgkJCSAgICAoKHdlbGxMYXllcldpZHRoIC0gdykgLyAyKSkKCQkgICAgKSkKCSAgICApCgkpIAoJaWYoKChpbXBsYW50ID09IHQpIHx8IChpbXBsYW50ID09ICJUUlVFIikpIHRoZW4gCgkgICAgKGltcGxhbnQgPSB0KSBlbHNlIAoJICAgIChpbXBsYW50ID0gbmlsKQoJKSAKCWlmKCghaWRMYXllcnNUYWJsZSB8fCAoaWRMYXllcnNUYWJsZSA9PSAibm9uZSIpIHx8IChpZExheWVyc1RhYmxlID09ICJuaWwiKSB8fCAoaWRMYXllcnNUYWJsZSA9PSAiRkFMU0UiKSkgdGhlbiAKCSAgICAoaWRMYXllciA9IG5pbCkgZWxzZSAKCSAgICAoaWRMYXllciA9IHQpCgkpCglpZigobGlzdHAoaWRMYXllcnNUYWJsZSkgJiYgKGNhYXIoaWRMYXllcnNUYWJsZSkgPT0gIm5vbmUiKSkgCgkgICAgKGlkTGF5ZXIgPSBuaWwpCgkpIAoJaWYoKCFzcmNTZWNJZExheWVyc1RhYmxlIHx8IChzcmNTZWNJZExheWVyc1RhYmxlID09ICJub25lIikgfHwgKHNyY1NlY0lkTGF5ZXJzVGFibGUgPT0gIm5pbCIpIHx8IChzcmNTZWNJZExheWVyc1RhYmxlID09ICJGQUxTRSIpKSB0aGVuIAoJICAgIChzcmNTZWNJZExheWVyID0gbmlsKSBlbHNlIAoJICAgIChzcmNTZWNJZExheWVyID0gdCkKCSkgCglpZigobGlzdHAoc3JjU2VjSWRMYXllcnNUYWJsZSkgJiYgKGNhYXIoc3JjU2VjSWRMYXllcnNUYWJsZSkgPT0gIm5vbmUiKSkgCgkgICAgKHNyY1NlY0lkTGF5ZXIgPSBuaWwpCgkpIAoJaWYoKCFkcm5TZWNJZExheWVyc1RhYmxlIHx8IChkcm5TZWNJZExheWVyc1RhYmxlID09ICJub25lIikgfHwgKGRyblNlY0lkTGF5ZXJzVGFibGUgPT0gIm5pbCIpIHx8IChkcm5TZWNJZExheWVyc1RhYmxlID09ICJGQUxTRSIpKSB0aGVuIAoJICAgIChkcm5TZWNJZExheWVyID0gbmlsKSBlbHNlIAoJICAgIChkcm5TZWNJZExheWVyID0gdCkKCSkgCglpZigobGlzdHAoZHJuU2VjSWRMYXllcnNUYWJsZSkgJiYgKGNhYXIoZHJuU2VjSWRMYXllcnNUYWJsZSkgPT0gIm5vbmUiKSkgCgkgICAgKGRyblNlY0lkTGF5ZXIgPSBuaWwpCgkpCglpZigoKHNvdXJjZUZpcnN0ID09IHQpIHx8IChzb3VyY2VGaXJzdCA9PSAiVFJVRSIpKSB0aGVuIAoJICAgIChzb3VyY2VGaXJzdCA9IHQpIGVsc2UgCgkgICAgKHNvdXJjZUZpcnN0ID0gbmlsKQoJKSAKCWlmKCgoZ2F0ZUltcGxhbnQgPT0gdCkgfHwgKGdhdGVJbXBsYW50ID09ICJUUlVFIikpIHRoZW4gCgkgICAgKGdhdGVJbXBsYW50ID0gdCkgZWxzZSAKCSAgICAoZ2F0ZUltcGxhbnQgPSBuaWwpCgkpIAoJaWYoKChtYW51YWxMT0QgPT0gdCkgfHwgKG1hbnVhbExPRCA9PSAiVFJVRSIpKSB0aGVuIAoJICAgIChtYW51YWxMT0QgPSB0KSBlbHNlIAoJICAgIChtYW51YWxMT0QgPSBuaWwpCgkpIAoJaWYoKGdhdGVFeHQgPCAwLjApIAoJICAgIGVycm9yKCJtTW9kZWxGZXRDbGFzczogZ2F0ZUV4dCAoJWcpIG11c3QgYmUgPiAwXG4iIGdhdGVFeHQpCgkpIAoJKGdOZXQgPSAoZGJDcmVhdGVOZXQgdGNDZWxsVmlldyAiZyIpKQoJKGRiQ3JlYXRlVGVybSBnTmV0ICJnIiAiaW5wdXQiKSAKCShzTmV0ID0gKGRiQ3JlYXRlTmV0IHRjQ2VsbFZpZXcgInMiKSkgCgkoZGJDcmVhdGVUZXJtIHNOZXQgInMiICJpbnB1dE91dHB1dCIpIAoJKGROZXQgPSAoZGJDcmVhdGVOZXQgdGNDZWxsVmlldyAiZCIpKSAKCShkYkNyZWF0ZVRlcm0gZE5ldCAiZCIgImlucHV0T3V0cHV0IikKCWlmKHNvdXJjZUZpcnN0IHRoZW4gCgkgICAgKGNOZXQgPSBzTmV0KSAKCSAgICAobmV0TCA9ICJTIikgCgkgICAgKHNlY0lkTGF5ZXIgPSBzcmNTZWNJZExheWVyKQoJICAgIHdoZW4oc2VjSWRMYXllciAKCQkoc2VjSWRMYXllcnNUYWJsZSA9IHNyY1NlY0lkTGF5ZXJzVGFibGUpCgkgICAgKSBlbHNlIAoJICAgIChjTmV0ID0gZE5ldCkgCgkgICAgKG5ldEwgPSAiRCIpIAoJICAgIChzZWNJZExheWVyID0gZHJuU2VjSWRMYXllcikKCSAgICB3aGVuKHNlY0lkTGF5ZXIgCgkJKHNlY0lkTGF5ZXJzVGFibGUgPSBkcm5TZWNJZExheWVyc1RhYmxlKQoJICAgICkKCSkgCgl3aGVuKChtIDwgMSkgCgkgICAgKG0gPSAxKQoJKSAKCXdoZW4oKGZpcnN0Q29udGFjdCAhPSAiIikgCgkgICAgKGNvbnRhY3RGID0gKGRiT3BlbkNlbGxWaWV3IAoJCSAgICAodGNDZWxsVmlld34+bGliKSBmaXJzdENvbnRhY3QgInN5bWJvbGljIiBuaWwKCQkgICAgInJuIgoJCSkpCgkpIAoJd2hlbigobGFzdENvbnRhY3QgIT0gIiIpIAoJICAgIChjb250YWN0TCA9IChkYk9wZW5DZWxsVmlldyAKCQkgICAgKHRjQ2VsbFZpZXd+PmxpYikgbGFzdENvbnRhY3QgInN5bWJvbGljIiBuaWwKCQkgICAgInJuIgoJCSkpCgkpIAoJd2hlbigoc2hhcmVkRHJhaW4gIT0gIiIpIAoJICAgIChjb250YWN0RCA9IChkYk9wZW5DZWxsVmlldyAKCQkgICAgKHRjQ2VsbFZpZXd+PmxpYikgc2hhcmVkRHJhaW4gInN5bWJvbGljIiBuaWwKCQkgICAgInJuIgoJCSkpCgkpCgl3aGVuKChzaGFyZWRTb3VyY2UgIT0gIiIpIAoJICAgIChjb250YWN0UyA9IChkYk9wZW5DZWxsVmlldyAKCQkgICAgKHRjQ2VsbFZpZXd+PmxpYikgc2hhcmVkU291cmNlICJzeW1ib2xpYyIgbmlsCgkJICAgICJybiIKCQkpKQoJKSAKCXdoZW4obG9kRW5hYmxlZCAKCSAgICB1bmxlc3MoKGZpcnN0Q29udGFjdCA9PSAiIikgCgkJd2hlbigoKGNvbnRhY3RGfj50YXBMYXllckJib3gpID09IG5pbCkgCgkJICAgIChjb250YWN0Rkxlbmd0aCA9IChjYWFkcigoY29udGFjdEZ+PmRpZmZMYXllckJib3gpKSAtIGNhYXIoKGNvbnRhY3RGfj5kaWZmTGF5ZXJCYm94KSkpKQoJCSkgCgkJdW5sZXNzKCgoY29udGFjdEZ+PnRhcExheWVyQmJveCkgPT0gbmlsKSAKCQkgICAgKGNvbnRhY3RGTGVuZ3RoID0gKG1heChjYWFkcigoY29udGFjdEZ+PmRpZmZMYXllckJib3gpKSAKCQkJCWNhYWRyKChjb250YWN0Rn4+dGFwTGF5ZXJCYm94KSkKCQkJICAgICkgLSBtaW4oY2FhcigoY29udGFjdEZ+PmRpZmZMYXllckJib3gpKSAKCQkJCWNhYXIoKGNvbnRhY3RGfj50YXBMYXllckJib3gpKQoJCQkgICAgKSkpCgkJKQoJICAgICkgCgkgICAgd2hlbigoZmlyc3RDb250YWN0ID09ICIiKSAKCQkoY29udGFjdEZMZW5ndGggPSBkaWZmRXh0KQoJICAgICkgCgkgICAgdW5sZXNzKChsYXN0Q29udGFjdCA9PSAiIikgCgkJd2hlbigoKGNvbnRhY3RMfj50YXBMYXllckJib3gpID09IG5pbCkgCgkJICAgIChjb250YWN0TExlbmd0aCA9IChjYWFkcigoY29udGFjdEx+PmRpZmZMYXllckJib3gpKSAtIGNhYXIoKGNvbnRhY3RMfj5kaWZmTGF5ZXJCYm94KSkpKQoJCSkgCgkJdW5sZXNzKCgoY29udGFjdEx+PnRhcExheWVyQmJveCkgPT0gbmlsKSAKCQkgICAgKGNvbnRhY3RMTGVuZ3RoID0gKG1heChjYWFkcigoY29udGFjdEx+PmRpZmZMYXllckJib3gpKSAKCQkJCWNhYWRyKChjb250YWN0TH4+dGFwTGF5ZXJCYm94KSkKCQkJICAgICkgLSBtaW4oY2FhcigoY29udGFjdEx+PmRpZmZMYXllckJib3gpKSAKCQkJCWNhYXIoKGNvbnRhY3RMfj50YXBMYXllckJib3gpKQoJCQkgICAgKSkpCgkJKQoJICAgICkgCgkgICAgd2hlbigobGFzdENvbnRhY3QgPT0gIiIpIAoJCShjb250YWN0TExlbmd0aCA9IGRpZmZFeHQpCgkgICAgKQoJICAgIHVubGVzcygoc2hhcmVkRHJhaW4gPT0gIiIpIAoJCXdoZW4oKChjb250YWN0RH4+dGFwTGF5ZXJCYm94KSA9PSBuaWwpIAoJCSAgICAoY29udGFjdERMZW5ndGggPSAoY2FhZHIoKGNvbnRhY3REfj5kaWZmTGF5ZXJCYm94KSkgLSBjYWFyKChjb250YWN0RH4+ZGlmZkxheWVyQmJveCkpKSkKCQkpIAoJCXVubGVzcygoKGNvbnRhY3REfj50YXBMYXllckJib3gpID09IG5pbCkgCgkJICAgIChjb250YWN0RExlbmd0aCA9IChtYXgoY2FhZHIoKGNvbnRhY3REfj5kaWZmTGF5ZXJCYm94KSkgCgkJCQljYWFkcigoY29udGFjdER+PnRhcExheWVyQmJveCkpCgkJCSAgICApIC0gbWluKGNhYXIoKGNvbnRhY3REfj5kaWZmTGF5ZXJCYm94KSkgCgkJCQljYWFyKChjb250YWN0RH4+dGFwTGF5ZXJCYm94KSkKCQkJICAgICkpKQoJCSkKCSAgICApIAoJICAgIHdoZW4oKHNoYXJlZERyYWluID09ICIiKSAKCQkoY29udGFjdERMZW5ndGggPSBnYXRldG9nYXRlU3BhY2luZykKCSAgICApIAoJICAgIHVubGVzcygoc2hhcmVkU291cmNlID09ICIiKSAKCQl3aGVuKCgoY29udGFjdFN+PnRhcExheWVyQmJveCkgPT0gbmlsKSAKCQkgICAgKGNvbnRhY3RTTGVuZ3RoID0gKGNhYWRyKChjb250YWN0U34+ZGlmZkxheWVyQmJveCkpIC0gY2FhcigoY29udGFjdFN+PmRpZmZMYXllckJib3gpKSkpCgkJKSAKCQl1bmxlc3MoKChjb250YWN0U34+dGFwTGF5ZXJCYm94KSA9PSBuaWwpIAoJCSAgICAoY29udGFjdFNMZW5ndGggPSAobWF4KGNhYWRyKChjb250YWN0U34+ZGlmZkxheWVyQmJveCkpIAoJCQkJY2FhZHIoKGNvbnRhY3RTfj50YXBMYXllckJib3gpKQoJCQkgICAgKSAtIG1pbihjYWFyKChjb250YWN0U34+ZGlmZkxheWVyQmJveCkpIAoJCQkJY2FhcigoY29udGFjdFN+PnRhcExheWVyQmJveCkpCgkJCSAgICApKSkKCQkpCgkgICAgKSAKCSAgICB3aGVuKChzaGFyZWRTb3VyY2UgPT0gIiIpIAoJCShjb250YWN0U0xlbmd0aCA9IGdhdGV0b2dhdGVTcGFjaW5nKQoJICAgICkKCSkgCgkodmlhMVhDcmRGID0gaWYoKGNvbnRhY3RGfj5iQm94VmlhMSkgCgkJYWJzKGNhYXIoKGNvbnRhY3RGfj5iQm94VmlhMSkpKSBuaWwKCSAgICApKSAKCShsYXllcjJYQ3JkRiA9IGlmKChjb250YWN0Rn4+YkJveExheWVyMikgCgkJYWJzKGNhYXIoKGNvbnRhY3RGfj5iQm94TGF5ZXIyKSkpIG5pbAoJICAgICkpIAoJKHZpYTJYQ3JkRiA9IGlmKChjb250YWN0Rn4+YkJveFZpYTIpIAoJCWFicyhjYWFyKChjb250YWN0Rn4+YkJveFZpYTIpKSkgbmlsCgkgICAgKSkKCShsYXllcjNYQ3JkRiA9IGlmKChjb250YWN0Rn4+YkJveExheWVyMykgCgkJYWJzKGNhYXIoKGNvbnRhY3RGfj5iQm94TGF5ZXIzKSkpIG5pbAoJICAgICkpIAoJKGxheWVyMVhDcmRGID0gaWYoKGNvbnRhY3RGfj5kaWZmTGF5ZXJCYm94KSAKCQlhYnMoY2FhcigoY29udGFjdEZ+PmRpZmZMYXllckJib3gpKSkgbmlsCgkgICAgKSkgCgkodmlhMVhDcmRMID0gaWYoKGNvbnRhY3RMfj5iQm94VmlhMSkgCgkJYWJzKGNhYXIoKGNvbnRhY3RMfj5iQm94VmlhMSkpKSBuaWwKCSAgICApKSAKCShsYXllcjJYQ3JkTCA9IGlmKChjb250YWN0TH4+YkJveExheWVyMikgCgkJYWJzKGNhYXIoKGNvbnRhY3RMfj5iQm94TGF5ZXIyKSkpIG5pbAoJICAgICkpIAoJKHZpYTJYQ3JkTCA9IGlmKChjb250YWN0TH4+YkJveFZpYTIpIAoJCWFicyhjYWFyKChjb250YWN0TH4+YkJveFZpYTIpKSkgbmlsCgkgICAgKSkKCShsYXllcjNYQ3JkTCA9IGlmKChjb250YWN0TH4+YkJveExheWVyMykgCgkJYWJzKGNhYXIoKGNvbnRhY3RMfj5iQm94TGF5ZXIzKSkpIG5pbAoJICAgICkpIAoJKGxheWVyMVhDcmRMID0gaWYoKGNvbnRhY3RMfj5kaWZmTGF5ZXJCYm94KSAKCQlhYnMoY2FhcigoY29udGFjdEx+PmRpZmZMYXllckJib3gpKSkgbmlsCgkgICAgKSkgCgkodmlhMVhDcmRTID0gaWYoKGNvbnRhY3RTfj5iQm94VmlhMSkgCgkJYWJzKGNhYXIoKGNvbnRhY3RTfj5iQm94VmlhMSkpKSBuaWwKCSAgICApKSAKCShsYXllcjJYQ3JkUyA9IGlmKChjb250YWN0U34+YkJveExheWVyMikgCgkJYWJzKGNhYXIoKGNvbnRhY3RTfj5iQm94TGF5ZXIyKSkpIG5pbAoJICAgICkpIAoJKHZpYTJYQ3JkUyA9IGlmKChjb250YWN0U34+YkJveFZpYTIpIAoJCWFicyhjYWFyKChjb250YWN0U34+YkJveFZpYTIpKSkgbmlsCgkgICAgKSkKCShsYXllcjNYQ3JkUyA9IGlmKChjb250YWN0U34+YkJveExheWVyMykgCgkJYWJzKGNhYXIoKGNvbnRhY3RTfj5iQm94TGF5ZXIzKSkpIG5pbAoJICAgICkpIAoJKGxheWVyMVhDcmRTID0gaWYoKGNvbnRhY3RTfj5kaWZmTGF5ZXJCYm94KSAKCQlhYnMoY2FhcigoY29udGFjdFN+PmRpZmZMYXllckJib3gpKSkgbmlsCgkgICAgKSkgCgkodmlhMVhDcmREID0gaWYoKGNvbnRhY3REfj5iQm94VmlhMSkgCgkJYWJzKGNhYXIoKGNvbnRhY3REfj5iQm94VmlhMSkpKSBuaWwKCSAgICApKSAKCShsYXllcjJYQ3JkRCA9IGlmKChjb250YWN0RH4+YkJveExheWVyMikgCgkJYWJzKGNhYXIoKGNvbnRhY3REfj5iQm94TGF5ZXIyKSkpIG5pbAoJICAgICkpIAoJKHZpYTJYQ3JkRCA9IGlmKChjb250YWN0RH4+YkJveFZpYTIpIAoJCWFicyhjYWFyKChjb250YWN0RH4+YkJveFZpYTIpKSkgbmlsCgkgICAgKSkKCShsYXllcjNYQ3JkRCA9IGlmKChjb250YWN0RH4+YkJveExheWVyMykgCgkJYWJzKGNhYXIoKGNvbnRhY3REfj5iQm94TGF5ZXIzKSkpIG5pbAoJICAgICkpIAoJKGxheWVyMVhDcmREID0gaWYoKGNvbnRhY3REfj5kaWZmTGF5ZXJCYm94KSAKCQlhYnMoY2FhcigoY29udGFjdER+PmRpZmZMYXllckJib3gpKSkgbmlsCgkgICAgKSkgCglpZigobGF5ZXIxWENyZEYgJiYgdmlhMVhDcmRGKSB0aGVuIAoJICAgICh2aWExRW5jRiA9IGFicygobGF5ZXIxWENyZEYgLSB2aWExWENyZEYpKSkKCSkgCglpZigobGF5ZXIxWENyZEYgJiYgdmlhMlhDcmRGKSB0aGVuIAoJICAgICh2aWEyRW5jRiA9IGFicygobGF5ZXIxWENyZEYgLSB2aWEyWENyZEYpKSkKCSkgCglpZigobGF5ZXIxWENyZEYgJiYgbGF5ZXIyWENyZEYpIHRoZW4gCgkgICAgKGxheWVyMkVuY0YgPSBhYnMoKGxheWVyMVhDcmRGIC0gbGF5ZXIyWENyZEYpKSkKCSkKCWlmKChsYXllcjFYQ3JkRiAmJiBsYXllcjNYQ3JkRikgdGhlbiAKCSAgICAobGF5ZXIzRW5jRiA9IGFicygobGF5ZXIxWENyZEYgLSBsYXllcjNYQ3JkRikpKQoJKSAKCWlmKChsYXllcjFYQ3JkTCAmJiB2aWExWENyZEwpIHRoZW4gCgkgICAgKHZpYTFFbmNMID0gYWJzKChsYXllcjFYQ3JkTCAtIHZpYTFYQ3JkTCkpKQoJKSAKCWlmKChsYXllcjFYQ3JkTCAmJiB2aWEyWENyZEwpIHRoZW4gCgkgICAgKHZpYTJFbmNMID0gYWJzKChsYXllcjFYQ3JkTCAtIHZpYTJYQ3JkTCkpKQoJKSAKCWlmKChsYXllcjFYQ3JkTCAmJiBsYXllcjJYQ3JkTCkgdGhlbiAKCSAgICAobGF5ZXIyRW5jTCA9IGFicygobGF5ZXIxWENyZEwgLSBsYXllcjJYQ3JkTCkpKQoJKSAKCWlmKChsYXllcjFYQ3JkTCAmJiBsYXllcjNYQ3JkTCkgdGhlbiAKCSAgICAobGF5ZXIzRW5jTCA9IGFicygobGF5ZXIxWENyZEwgLSBsYXllcjNYQ3JkTCkpKQoJKQoJaWYoKGxheWVyMVhDcmRTICYmIHZpYTFYQ3JkUykgdGhlbiAKCSAgICAodmlhMUVuY1MgPSBhYnMoKGxheWVyMVhDcmRTIC0gdmlhMVhDcmRTKSkpCgkpIAoJaWYoKGxheWVyMVhDcmRTICYmIHZpYTJYQ3JkUykgdGhlbiAKCSAgICAodmlhMkVuY1MgPSBhYnMoKGxheWVyMVhDcmRTIC0gdmlhMlhDcmRTKSkpCgkpIAoJaWYoKGxheWVyMVhDcmRTICYmIGxheWVyMlhDcmRTKSB0aGVuIAoJICAgIChsYXllcjJFbmNTID0gYWJzKChsYXllcjFYQ3JkUyAtIGxheWVyMlhDcmRTKSkpCgkpIAoJaWYoKGxheWVyMVhDcmRTICYmIGxheWVyM1hDcmRTKSB0aGVuIAoJICAgIChsYXllcjNFbmNTID0gYWJzKChsYXllcjFYQ3JkUyAtIGxheWVyM1hDcmRTKSkpCgkpIAoJaWYoKGxheWVyMVhDcmREICYmIHZpYTFYQ3JkRCkgdGhlbiAKCSAgICAodmlhMUVuY0QgPSBhYnMoKGxheWVyMVhDcmREIC0gdmlhMVhDcmREKSkpCgkpCglpZigobGF5ZXIxWENyZEQgJiYgdmlhMlhDcmREKSB0aGVuIAoJICAgICh2aWEyRW5jRCA9IGFicygobGF5ZXIxWENyZEQgLSB2aWEyWENyZEQpKSkKCSkgCglpZigobGF5ZXIxWENyZEQgJiYgbGF5ZXIyWENyZEQpIHRoZW4gCgkgICAgKGxheWVyMkVuY0QgPSBhYnMoKGxheWVyMVhDcmREIC0gbGF5ZXIyWENyZEQpKSkKCSkgCglpZigobGF5ZXIxWENyZEQgJiYgbGF5ZXIzWENyZEQpIHRoZW4gCgkgICAgKGxheWVyM0VuY0QgPSBhYnMoKGxheWVyMVhDcmREIC0gbGF5ZXIzWENyZEQpKSkKCSkgCglpZigodmlhMUVuY0YgJiYgdmlhMUVuY0wpIHRoZW4gCgkgICAgKHZpYTFTcGFjZUZMID0gKHZpYTFFbmNGICsgdmlhMUVuY0wgKyBsKSkgCgkgICAgKHZpYTFPZmZTZXRGTCA9ICh2aWExTWluU3BhY2UgLSB2aWExU3BhY2VGTCkpIGVsc2UKCSAgICAodmlhMU9mZlNldEZMID0gMC4wKQoJKSAKCWlmKCh2aWEyRW5jRiAmJiB2aWEyRW5jTCkgdGhlbiAKCSAgICAodmlhMlNwYWNlRkwgPSAodmlhMkVuY0YgKyB2aWEyRW5jTCArIGwpKSAKCSAgICAodmlhMk9mZlNldEZMID0gKHZpYTJNaW5TcGFjZSAtIHZpYTJTcGFjZUZMKSkgZWxzZQoJICAgICh2aWEyT2ZmU2V0RkwgPSAwLjApCgkpCglpZigobGF5ZXIzRW5jRiAmJiBsYXllcjNFbmNMKSB0aGVuIAoJICAgIChsYXllcjNTcGFjZUZMID0gKGxheWVyM0VuY0YgKyBsYXllcjNFbmNMICsgbCkpIAoJICAgIChsYXllcjNPZmZTZXRGTCA9IChsYXllcjNNaW5TcGFjZSAtIGxheWVyM1NwYWNlRkwpKSBlbHNlCgkgICAgKGxheWVyM09mZlNldEZMID0gMC4wKQoJKSAKCWlmKChsYXllcjJFbmNGICYmIGxheWVyMkVuY0wpIHRoZW4gCgkgICAgKGxheWVyMlNwYWNlRkwgPSAobGF5ZXIyRW5jRiArIGxheWVyMkVuY0wgKyBsKSkgCgkgICAgKGxheWVyMk9mZlNldEZMID0gKGxheWVyMk1pblNwYWNlIC0gbGF5ZXIyU3BhY2VGTCkpIGVsc2UKCSAgICAobGF5ZXIyT2ZmU2V0RkwgPSAwLjApCgkpIAoJaWYoKHZpYTFFbmNGICYmIHZpYTFFbmNTKSB0aGVuIAoJICAgICh2aWExU3BhY2VGUyA9ICh2aWExRW5jRiArIHZpYTFFbmNTICsgbCkpIAoJICAgICh2aWExT2ZmU2V0RlMgPSAodmlhMU1pblNwYWNlIC0gdmlhMVNwYWNlRlMpKSBlbHNlCgkgICAgKHZpYTFPZmZTZXRGUyA9IDAuMCkKCSkgCglpZigodmlhMkVuY0YgJiYgdmlhMkVuY1MpIHRoZW4gCgkgICAgKHZpYTJTcGFjZUZTID0gKHZpYTJFbmNGICsgdmlhMkVuY1MgKyBsKSkgCgkgICAgKHZpYTJPZmZTZXRGUyA9ICh2aWEyTWluU3BhY2UgLSB2aWEyU3BhY2VGUykpIGVsc2UKCSAgICAodmlhMk9mZlNldEZTID0gMC4wKQoJKSAKCWlmKChsYXllcjNFbmNGICYmIGxheWVyM0VuY1MpIHRoZW4gCgkgICAgKGxheWVyM1NwYWNlRlMgPSAobGF5ZXIzRW5jRiArIGxheWVyM0VuY1MgKyBsKSkgCgkgICAgKGxheWVyM09mZlNldEZTID0gKGxheWVyM01pblNwYWNlIC0gbGF5ZXIzU3BhY2VGUykpIGVsc2UKCSAgICAobGF5ZXIzT2ZmU2V0RlMgPSAwLjApCgkpCglpZigobGF5ZXIyRW5jRiAmJiBsYXllcjJFbmNTKSB0aGVuIAoJICAgIChsYXllcjJTcGFjZUZTID0gKGxheWVyMkVuY0YgKyBsYXllcjJFbmNTICsgbCkpIAoJICAgIChsYXllcjJPZmZTZXRGUyA9IChsYXllcjJNaW5TcGFjZSAtIGxheWVyMlNwYWNlRlMpKSBlbHNlCgkgICAgKGxheWVyMk9mZlNldEZTID0gMC4wKQoJKSAKCWlmKCh2aWExRW5jRiAmJiB2aWExRW5jRCkgdGhlbiAKCSAgICAodmlhMVNwYWNlRkQgPSAodmlhMUVuY0YgKyB2aWExRW5jRCArIGwpKSAKCSAgICAodmlhMU9mZlNldEZEID0gKHZpYTFNaW5TcGFjZSAtIHZpYTFTcGFjZUZEKSkgZWxzZQoJICAgICh2aWExT2ZmU2V0RkQgPSAwLjApCgkpIAoJaWYoKHZpYTJFbmNGICYmIHZpYTJFbmNEKSB0aGVuIAoJICAgICh2aWEyU3BhY2VGRCA9ICh2aWEyRW5jRiArIHZpYTJFbmNEICsgbCkpIAoJICAgICh2aWEyT2ZmU2V0RkQgPSAodmlhMk1pblNwYWNlIC0gdmlhMlNwYWNlRkQpKSBlbHNlCgkgICAgKHZpYTJPZmZTZXRGRCA9IDAuMCkKCSkgCglpZigobGF5ZXIzRW5jRiAmJiBsYXllcjNFbmNEKSB0aGVuIAoJICAgIChsYXllcjNTcGFjZUZEID0gKGxheWVyM0VuY0YgKyBsYXllcjNFbmNEICsgbCkpIAoJICAgIChsYXllcjNPZmZTZXRGRCA9IChsYXllcjNNaW5TcGFjZSAtIGxheWVyM1NwYWNlRkQpKSBlbHNlCgkgICAgKGxheWVyM09mZlNldEZEID0gMC4wKQoJKSAKCWlmKChsYXllcjJFbmNGICYmIGxheWVyMkVuY0QpIHRoZW4gCgkgICAgKGxheWVyMlNwYWNlRkQgPSAobGF5ZXIyRW5jRiArIGxheWVyMkVuY0QgKyBsKSkgCgkgICAgKGxheWVyMk9mZlNldEZEID0gKGxheWVyMk1pblNwYWNlIC0gbGF5ZXIyU3BhY2VGRCkpIGVsc2UKCSAgICAobGF5ZXIyT2ZmU2V0RkQgPSAwLjApCgkpCglpZigodmlhMUVuY0wgJiYgdmlhMUVuY1MpIHRoZW4gCgkgICAgKHZpYTFTcGFjZUxTID0gKHZpYTFFbmNMICsgdmlhMUVuY1MgKyBsKSkgCgkgICAgKHZpYTFPZmZTZXRMUyA9ICh2aWExTWluU3BhY2UgLSB2aWExU3BhY2VMUykpIGVsc2UKCSAgICAodmlhMU9mZlNldExTID0gMC4wKQoJKSAKCWlmKCh2aWEyRW5jTCAmJiB2aWEyRW5jUykgdGhlbiAKCSAgICAodmlhMlNwYWNlTFMgPSAodmlhMkVuY0wgKyB2aWEyRW5jUyArIGwpKSAKCSAgICAodmlhMk9mZlNldExTID0gKHZpYTJNaW5TcGFjZSAtIHZpYTJTcGFjZUxTKSkgZWxzZQoJICAgICh2aWEyT2ZmU2V0TFMgPSAwLjApCgkpIAoJaWYoKGxheWVyM0VuY0wgJiYgbGF5ZXIzRW5jUykgdGhlbiAKCSAgICAobGF5ZXIzU3BhY2VMUyA9IChsYXllcjNFbmNMICsgbGF5ZXIzRW5jUyArIGwpKSAKCSAgICAobGF5ZXIzT2ZmU2V0TFMgPSAobGF5ZXIzTWluU3BhY2UgLSBsYXllcjNTcGFjZUxTKSkgZWxzZQoJICAgIChsYXllcjNPZmZTZXRMUyA9IDAuMCkKCSkgCglpZigobGF5ZXIyRW5jTCAmJiBsYXllcjJFbmNTKSB0aGVuIAoJICAgIChsYXllcjJTcGFjZUxTID0gKGxheWVyMkVuY0wgKyBsYXllcjJFbmNTICsgbCkpIAoJICAgIChsYXllcjJPZmZTZXRMUyA9IChsYXllcjJNaW5TcGFjZSAtIGxheWVyMlNwYWNlTFMpKSBlbHNlCgkgICAgKGxheWVyMk9mZlNldExTID0gMC4wKQoJKSAKCWlmKCh2aWExRW5jTCAmJiB2aWExRW5jRCkgdGhlbiAKCSAgICAodmlhMVNwYWNlTEQgPSAodmlhMUVuY0wgKyB2aWExRW5jRCArIGwpKSAKCSAgICAodmlhMU9mZlNldExEID0gKHZpYTFNaW5TcGFjZSAtIHZpYTFTcGFjZUxEKSkgZWxzZQoJICAgICh2aWExT2ZmU2V0TEQgPSAwLjApCgkpCglpZigodmlhMkVuY0wgJiYgdmlhMkVuY0QpIHRoZW4gCgkgICAgKHZpYTJTcGFjZUxEID0gKHZpYTJFbmNMICsgdmlhMkVuY0QgKyBsKSkgCgkgICAgKHZpYTJPZmZTZXRMRCA9ICh2aWEyTWluU3BhY2UgLSB2aWEyU3BhY2VMRCkpIGVsc2UKCSAgICAodmlhMk9mZlNldExEID0gMC4wKQoJKSAKCWlmKChsYXllcjNFbmNMICYmIGxheWVyM0VuY0QpIHRoZW4gCgkgICAgKGxheWVyM1NwYWNlTEQgPSAobGF5ZXIzRW5jTCArIGxheWVyM0VuY0QgKyBsKSkgCgkgICAgKGxheWVyM09mZlNldExEID0gKGxheWVyM01pblNwYWNlIC0gbGF5ZXIzU3BhY2VMRCkpIGVsc2UKCSAgICAobGF5ZXIzT2ZmU2V0TEQgPSAwLjApCgkpIAoJaWYoKGxheWVyMkVuY0wgJiYgbGF5ZXIyRW5jRCkgdGhlbiAKCSAgICAobGF5ZXIyU3BhY2VMRCA9IChsYXllcjJFbmNMICsgbGF5ZXIyRW5jRCArIGwpKSAKCSAgICAobGF5ZXIyT2ZmU2V0TEQgPSAobGF5ZXIyTWluU3BhY2UgLSBsYXllcjJTcGFjZUxEKSkgZWxzZQoJICAgIChsYXllcjJPZmZTZXRMRCA9IDAuMCkKCSkgCglpZigodmlhMUVuY1MgJiYgdmlhMUVuY0QpIHRoZW4gCgkgICAgKHZpYTFTcGFjZVNEID0gKHZpYTFFbmNTICsgdmlhMUVuY0QgKyBsKSkgCgkgICAgKHZpYTFPZmZTZXRTRCA9ICh2aWExTWluU3BhY2UgLSB2aWExU3BhY2VTRCkpIGVsc2UKCSAgICAodmlhMU9mZlNldFNEID0gMC4wKQoJKSAKCWlmKCh2aWEyRW5jUyAmJiB2aWEyRW5jRCkgdGhlbiAKCSAgICAodmlhMlNwYWNlU0QgPSAodmlhMkVuY1MgKyB2aWEyRW5jRCArIGwpKSAKCSAgICAodmlhMk9mZlNldFNEID0gKHZpYTJNaW5TcGFjZSAtIHZpYTJTcGFjZVNEKSkgZWxzZQoJICAgICh2aWEyT2ZmU2V0U0QgPSAwLjApCgkpCglpZigobGF5ZXIzRW5jUyAmJiBsYXllcjNFbmNEKSB0aGVuIAoJICAgIChsYXllcjNTcGFjZVNEID0gKGxheWVyM0VuY1MgKyBsYXllcjNFbmNEICsgbCkpIAoJICAgIChsYXllcjNPZmZTZXRTRCA9IChsYXllcjNNaW5TcGFjZSAtIGxheWVyM1NwYWNlU0QpKSBlbHNlCgkgICAgKGxheWVyM09mZlNldFNEID0gMC4wKQoJKSAKCWlmKChsYXllcjJFbmNTICYmIGxheWVyMkVuY0QpIHRoZW4gCgkgICAgKGxheWVyMlNwYWNlU0QgPSAobGF5ZXIyRW5jUyArIGxheWVyMkVuY0QgKyBsKSkgCgkgICAgKGxheWVyMk9mZlNldFNEID0gKGxheWVyMk1pblNwYWNlIC0gbGF5ZXIyU3BhY2VTRCkpIGVsc2UKCSAgICAobGF5ZXIyT2ZmU2V0U0QgPSAwLjApCgkpIAoJaWYoKG0gPT0gMSkgdGhlbiAKCSAgICAobWF4T2ZmU2V0ID0gbWF4KHZpYTFPZmZTZXRGTCB2aWEyT2ZmU2V0RkwgbGF5ZXIyT2ZmU2V0RkwgbGF5ZXIzT2ZmU2V0RkwgMC4wKSkgZWxzZSAKCSAgICBpZigobSA9PSAyKSB0aGVuIAoJCWlmKHNvdXJjZUZpcnN0IHRoZW4gCgkJICAgIChtYXhPZmZTZXQgPSBtYXgodmlhMU9mZlNldEZEIHZpYTJPZmZTZXRGRCBsYXllcjJPZmZTZXRGRCBsYXllcjNPZmZTZXRGRCB2aWExT2ZmU2V0TEQKCQkJICAgIHZpYTJPZmZTZXRMRCBsYXllcjJPZmZTZXRMRCBsYXllcjNPZmZTZXRMRCAwLjAKCQkJKSkgZWxzZSAKCQkgICAgKG1heE9mZlNldCA9IG1heCh2aWExT2ZmU2V0RlMgdmlhMk9mZlNldEZTIGxheWVyMk9mZlNldEZTIGxheWVyM09mZlNldEZTIHZpYTFPZmZTZXRMUwoJCQkgICAgdmlhMk9mZlNldExTIGxheWVyMk9mZlNldExTIGxheWVyM09mZlNldExTIDAuMAoJCQkpKQoJCSkgZWxzZSAKCQlpZigobW9kKG0gMikgPT0gMCkgdGhlbiAKCQkgICAgaWYoc291cmNlRmlyc3QgdGhlbiAKCQkJKG1heE9mZlNldCA9IG1heCh2aWExT2ZmU2V0RkQgdmlhMk9mZlNldEZEIGxheWVyMk9mZlNldEZEIGxheWVyM09mZlNldEZEIHZpYTFPZmZTZXRTRAoJCQkJdmlhMk9mZlNldFNEIGxheWVyMk9mZlNldFNEIGxheWVyM09mZlNldFNEIHZpYTFPZmZTZXRMRCB2aWEyT2ZmU2V0TEQKCQkJCWxheWVyMk9mZlNldExEIGxheWVyM09mZlNldExEIDAuMAoJCQkgICAgKSkgZWxzZSAKCQkJKG1heE9mZlNldCA9IG1heCh2aWExT2ZmU2V0RlMgdmlhMk9mZlNldEZTIGxheWVyMk9mZlNldEZTIGxheWVyM09mZlNldEZTIHZpYTFPZmZTZXRTRAoJCQkJdmlhMk9mZlNldFNEIGxheWVyMk9mZlNldFNEIGxheWVyM09mZlNldFNEIHZpYTFPZmZTZXRMUyB2aWEyT2ZmU2V0TFMKCQkJCWxheWVyMk9mZlNldExTIGxheWVyM09mZlNldExTIDAuMAoJCQkgICAgKSkKCQkgICAgKSBlbHNlIAoJCSAgICBpZihzb3VyY2VGaXJzdCB0aGVuIAoJCQkobWF4T2ZmU2V0ID0gbWF4KHZpYTFPZmZTZXRGRCB2aWEyT2ZmU2V0RkQgbGF5ZXIyT2ZmU2V0RkQgbGF5ZXIzT2ZmU2V0RkQgdmlhMU9mZlNldFNECgkJCQl2aWEyT2ZmU2V0U0QgbGF5ZXIyT2ZmU2V0U0QgbGF5ZXIzT2ZmU2V0U0QgdmlhMU9mZlNldExTIHZpYTJPZmZTZXRMUwoJCQkJbGF5ZXIyT2ZmU2V0TFMgbGF5ZXIzT2ZmU2V0TFMgMC4wCgkJCSAgICApKSBlbHNlIAoJCQkobWF4T2ZmU2V0ID0gbWF4KHZpYTFPZmZTZXRGUyB2aWEyT2ZmU2V0RlMgbGF5ZXIyT2ZmU2V0RlMgbGF5ZXIzT2ZmU2V0RlMgdmlhMU9mZlNldFNECgkJCQl2aWEyT2ZmU2V0U0QgbGF5ZXIyT2ZmU2V0U0QgbGF5ZXIzT2ZmU2V0U0QgdmlhMU9mZlNldExEIHZpYTJPZmZTZXRMRAoJCQkJbGF5ZXIyT2ZmU2V0TEQgbGF5ZXIzT2ZmU2V0TEQgMC4wCgkJCSAgICApKQoJCSAgICApCgkJKQoJICAgICkKCSkgCgkob2Zmc2V0U2lkZSA9IChtYXhPZmZTZXQgLyAyLjApKSAKCShtaW5TcGFjZU9mZlNldCA9ICgoY2VpbGluZyAKCQkgICAgKChvZmZzZXRTaWRlIC8gc25hcEdyaWQpICsgLTFlLTA2KQoJCSkgKiBzbmFwR3JpZCkpCglpZihpbXBsYW50IHRoZW4gCgkgICAgKGNvbnRhY3RJbXBQYXJhbSA9IGxpc3QoImltcGxhbnQiICJib29sZWFuIiB0KSkgZWxzZSAKCSAgICAoY29udGFjdEltcFBhcmFtID0gbGlzdCgiaW1wbGFudCIgImJvb2xlYW4iICJGQUxTRSIpKQoJKSAKCWlmKHdlbGxMYXllciB0aGVuIAoJICAgIChjb250YWN0V2VsbFBhcmFtID0gbGlzdCgiaW5XZWxsIiAiYm9vbGVhbiIgdCkpIGVsc2UgCgkgICAgKGNvbnRhY3RXZWxsUGFyYW0gPSBsaXN0KCJpbldlbGwiICJib29sZWFuIiAiRkFMU0UiKSkKCSkgCgkoeDFDb29yZCA9IDAuMCkgCgkoeTFDb29yZCA9IDAuMCkgCgkobGFzdFBZaVgxQ29vcmQgPSAoLSAoMi4wICogcG9seUltcFhFbmMpKSkKCXdoZW4oKHBvbHlJbXBsYW50ICYmIGdhdGVJbXBsYW50KSAKCSAgICAoeTFQWWlDb29yZCA9ICh5MUNvb3JkIC0gcG9seUltcFlFbmMgLSBnYXRlRXh0KSkgCgkgICAgKHkyUFlpQ29vcmQgPSAoeTFDb29yZCArIHcgKyBwb2x5SW1wWUVuYyArIGdhdGVFeHQpKQoJKSAKCShpZExheWVyc0Nvb3JkVGFibGUgPSBtYWtlVGFibGUoImlkTGF5ZXJzQ29vcmRUYWJsZSIgbmlsKSkgCgkobGF5ZXJJbmZvID0gbmlsKSAKCShsYXllckVuY3MgPSBuaWwpIAoJKHgxSWRDb29yZCA9IDAuMCkKCSh5MUlkQ29vcmQgPSAwLjApIAoJKHgySWRDb29yZCA9IDAuMCkgCgkoeTJJZENvb3JkID0gMC4wKSAKCXdoZW4oaWRMYXllciAKCSAgICBmb3JlYWNoKGxheWVySW5mbyBpZExheWVyc1RhYmxlIAoJCShsYXllck5hbWUgPSBjYXIobGF5ZXJJbmZvKSkgCgkJKGxheWVyRW5jcyA9IGNhZHIobGF5ZXJJbmZvKSkgCgkJKGlkTGF5Q29vcmRzID0gbGlzdCgoeDFJZENvb3JkOnkxSWRDb29yZCkgCgkJCSh4MklkQ29vcmQ6eTJJZENvb3JkKQoJCSAgICApKQoJCShpZExheWVyc0Nvb3JkVGFibGVbbGF5ZXJOYW1lXSA9IGlkTGF5Q29vcmRzKQoJICAgICkKCSkgCgkoc2VjSWRMYXllcnNDb29yZFRhYmxlID0gbWFrZVRhYmxlKCJzZWNJZExheWVyc0Nvb3JkVGFibGUiIG5pbCkpCgkoc2VjTGF5ZXJJbmZvID0gbmlsKSAKCShzZWNMYXllckVuY3MgPSBuaWwpIAoJKHgxU2VjSWRDb29yZCA9IDAuMCkgCgkoeTFTZWNJZENvb3JkID0gMC4wKSAKCSh4MlNlY0lkQ29vcmQgPSAwLjApCgkoeTJTZWNJZENvb3JkID0gMC4wKSAKCXdoZW4oc2VjSWRMYXllciAKCSAgICBmb3JlYWNoKHNlY0xheWVySW5mbyBzZWNJZExheWVyc1RhYmxlIAoJCShzZWNMYXllck5hbWUgPSBjYXIoc2VjTGF5ZXJJbmZvKSkgCgkJKHNlY0xheWVyRW5jcyA9IGNhZHIoc2VjTGF5ZXJJbmZvKSkgCgkJKHNlY0lkTGF5Q29vcmRzID0gbGlzdCgoeDFTZWNJZENvb3JkOnkxU2VjSWRDb29yZCkgCgkJCSh4MlNlY0lkQ29vcmQ6eTJTZWNJZENvb3JkKQoJCSAgICApKQoJCShzZWNJZExheWVyc0Nvb3JkVGFibGVbc2VjTGF5ZXJOYW1lXSA9IHNlY0lkTGF5Q29vcmRzKQoJICAgICkKCSkgCgkod2VsbEVuY0RpZmZZID0gd2VsbEVuY0RpZmYpIAoJKHdlbGxFbmNUYXBZID0gd2VsbEVuY1RhcCkgCgkod2VsbEVuY0RpZmZYID0gd2VsbEVuY0RpZmYpCgkod2VsbEVuY1RhcFggPSB3ZWxsRW5jVGFwKSAKCShleHRlbnNpb24gPSBuaWwpIAoJaWYoKGNOZXQgPT0gc05ldCkgdGhlbiAKCSAgICAob2Zmc2V0ID0gKG1pblNwYWNlT2ZmU2V0ICsgc3JjT2Zmc2V0KSkgCgkgICAgKGN1clRlcm1PZmZzZXQgPSBvZmZzZXQpIAoJICAgIChuZXh0VGVybU9mZnNldCA9IChtaW5TcGFjZU9mZlNldCArIGRybk9mZnNldCkpCgkgICAgKGN1clRlcm1TaENvbkxlbmd0aCA9IGNvbnRhY3RTTGVuZ3RoKSAKCSAgICAobmV4dFRlcm1TaENvbkxlbmd0aCA9IGNvbnRhY3RETGVuZ3RoKSBlbHNlIAoJICAgIChvZmZzZXQgPSAobWluU3BhY2VPZmZTZXQgKyBkcm5PZmZzZXQpKSAKCSAgICAoY3VyVGVybU9mZnNldCA9IG9mZnNldCkKCSAgICAobmV4dFRlcm1PZmZzZXQgPSAobWluU3BhY2VPZmZTZXQgKyBzcmNPZmZzZXQpKSAKCSAgICAoY3VyVGVybVNoQ29uTGVuZ3RoID0gY29udGFjdERMZW5ndGgpIAoJICAgIChuZXh0VGVybVNoQ29uTGVuZ3RoID0gY29udGFjdFNMZW5ndGgpCgkpIAoJd2hlbigoZmlyc3RDb250YWN0ICE9ICIiKSAKCSAgICAoY29udGFjdElkID0gKGRiT3BlbkNlbGxWaWV3IAoJCSAgICAodGNDZWxsVmlld34+bGliKSBmaXJzdENvbnRhY3QgInN5bWJvbGljIiBuaWwKCQkgICAgInJuIgoJCSkpIAoJICAgIHVubGVzcyhjb250YWN0SWQgCgkJZXJyb3Ioc3ByaW50ZihuaWwgIkNhbm5vdCBmaW5kL29wZW4gZmlyc3RDb250YWN0IGNvbnRhY3QgY2VsbCBgJXMnIiBmaXJzdENvbnRhY3QpKQoJICAgICkgCgkgICAgdW5sZXNzKChjb250YWN0SWR+PmlzUGFyYW1DZWxsKSAKCQllcnJvcihzcHJpbnRmKG5pbCAiTmFtZWQgY2VsbCBpcyBub3QgYSBwY2VsbCBgJXMnIiBmaXJzdENvbnRhY3QpKQoJICAgICkgCgkgICAgKHBhcmFtcyA9IChjb250YWN0SWR+PnBhcmFtZXRlcnMpKQoJICAgIChpbnN0UGFyYW1zID0gbGlzdChsaXN0KCJ3IiAiZmxvYXQiIHcpKSkgCgkgICAgd2hlbigocGFyYW1zfj5pbXBsYW50KSAKCQkoaW5zdFBhcmFtcyA9IHhjb25zKGluc3RQYXJhbXMgY29udGFjdEltcFBhcmFtKSkKCSAgICApIAoJICAgIHdoZW4oKHBhcmFtc34+aW5XZWxsKSAKCQkoaW5zdFBhcmFtcyA9IHhjb25zKGluc3RQYXJhbXMgY29udGFjdFdlbGxQYXJhbSkpCgkgICAgKSAKCSAgICAoaW5zdCA9IChkYkNyZWF0ZVBhcmFtSW5zdCB0Y0NlbGxWaWV3IGNvbnRhY3RJZCAiYzAiIAoJCSAgICAoKC0gb2Zmc2V0KTowKQoJCSAgICAiTVkiIDEgaW5zdFBhcmFtcwoJCSkpIAoJICAgIHVubGVzcyhpbnN0IAoJCWVycm9yKHNwcmludGYobmlsICJGYWlsZWQgdG8gY3JlYXRlIGluc3RhbmNlIG9mIGAlcyciIGZpcnN0Q29udGFjdCkpCgkgICAgKQoJICAgIHVubGVzcyhsb2RFbmFibGVkIAoJCXdoZW4oKG9mZnNldCA+IDFlLTA2KSAKCQkgICAgKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZMYXllciAKCQkJbGlzdCgoKHgxQ29vcmQgLSBvZmZzZXQpOnkxQ29vcmQpIAoJCQkgICAgKHgxQ29vcmQ6dykKCQkJKQoJCSAgICApIAoJCSAgICB3aGVuKChkaWZmSW1wbGFudCAmJiBpbXBsYW50KSAKCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZJbXBsYW50IAoJCQkgICAgbGlzdChsaXN0KCh4MUNvb3JkIC0gb2Zmc2V0KSAKCQkJCSAgICAoeTFDb29yZCAtIGRpZmZJbXBFbmMpCgkJCQkpIAoJCQkJbGlzdCh4MUNvb3JkIAoJCQkJICAgICh3ICsgZGlmZkltcEVuYykKCQkJCSkKCQkJICAgICkKCQkJKQoJCSAgICApIAoJCSAgICB3aGVuKChkaWZmQ29yZUltcGxhbnQgJiYgaW1wbGFudCkgCgkJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmQ29yZUltcGxhbnQgCgkJCSAgICBsaXN0KGxpc3QoKHgxQ29vcmQgLSBvZmZzZXQpIAoJCQkJICAgICh5MUNvb3JkIC0gZGlmZkNvcmVJbXBFbmMpCgkJCQkpIAoJCQkJbGlzdCh4MUNvb3JkIAoJCQkJICAgICh3ICsgZGlmZkNvcmVJbXBFbmMpCgkJCQkpCgkJCSAgICApCgkJCSkKCQkgICAgKQoJCSkKCSAgICApIAoJICAgIHdoZW4obG9kRW5hYmxlZCAKCQkoaXNTaW5nbGVTdHJhcHBlZCA9IG5pbCkgCgkJKGlzTkRTdHJhcHBlZCA9IG5pbCkgCgkJd2hlbihtYW51YWxMT0QgCgkJICAgIHdoZW4oTE9EQ29udGFjdE1hcFNTdHJhcHBlZCAKCQkJZm9yZWFjaChwYWlyIExPRENvbnRhY3RNYXBTU3RyYXBwZWQgCgkJCSAgICB3aGVuKChmaXJzdENvbnRhY3QgPT0gY2FyKHBhaXIpKSAKCQkJCShpc1NpbmdsZVN0cmFwcGVkID0gdCkgCgkJCQkoaW5uZXJDb250YWN0ID0gY2RyKHBhaXIpKQoJCQkgICAgKQoJCQkpCgkJICAgICkgCgkJICAgIHdoZW4oaXNTaW5nbGVTdHJhcHBlZCAKCQkJKGRiRGVsZXRlT2JqZWN0IGluc3QpIAoJCQkoZGJDbG9zZSBjb250YWN0SWQpIAoJCQkoaW5uZXJDb250YWN0SWQgPSAoZGJPcGVuQ2VsbFZpZXcgCgkJCQkodGNDZWxsVmlld34+bGliKSAKCQkJCWNhcihpbm5lckNvbnRhY3QpICJzeW1ib2xpYyIgbmlsCgkJCQkicm4iCgkJCSAgICApKSAKCQkJdW5sZXNzKChpbm5lckNvbnRhY3RJZH4+aXNQYXJhbUNlbGwpIAoJCQkgICAgZXJyb3Ioc3ByaW50ZihuaWwgIk5hbWVkIGNlbGwgaXMgbm90IGEgcGNlbGwgYCVzJyIgaW5uZXJDb250YWN0KSkKCQkJKQoJCQkoaW5uZXJDb250YWN0TGVuZ3RoID0gKGNhYWRyKChpbm5lckNvbnRhY3RJZH4+ZGlmZkxheWVyQmJveCkpIC0gY2FhcigoaW5uZXJDb250YWN0SWR+PmRpZmZMYXllckJib3gpKSkpIAoJCQkodmlhMVhDcmRJbm5lckNvbiA9IGlmKChpbm5lckNvbnRhY3RJZH4+YkJveFZpYTEpIAoJCQkJYWJzKGNhYXIoKGlubmVyQ29udGFjdElkfj5iQm94VmlhMSkpKSBuaWwKCQkJICAgICkpIAoJCQkobGF5ZXIyWENyZElubmVyQ29uID0gaWYoKGlubmVyQ29udGFjdElkfj5iQm94TGF5ZXIyKSAKCQkJCWFicyhjYWFyKChpbm5lckNvbnRhY3RJZH4+YkJveExheWVyMikpKSBuaWwKCQkJICAgICkpIAoJCQkodmlhMlhDcmRJbm5lckNvbiA9IGlmKChpbm5lckNvbnRhY3RJZH4+YkJveFZpYTIpIAoJCQkJYWJzKGNhYXIoKGlubmVyQ29udGFjdElkfj5iQm94VmlhMikpKSBuaWwKCQkJICAgICkpIAoJCQkobGF5ZXIzWENyZElubmVyQ29uID0gaWYoKGlubmVyQ29udGFjdElkfj5iQm94TGF5ZXIzKSAKCQkJCWFicyhjYWFyKChpbm5lckNvbnRhY3RJZH4+YkJveExheWVyMykpKSBuaWwKCQkJICAgICkpCgkJCShsYXllcjFYQ3JkSW5uZXJDb24gPSBpZigoaW5uZXJDb250YWN0SWR+PmRpZmZMYXllckJib3gpIAoJCQkJYWJzKGNhYXIoKGlubmVyQ29udGFjdElkfj5kaWZmTGF5ZXJCYm94KSkpIG5pbAoJCQkgICAgKSkgCgkJCWlmKChsYXllcjFYQ3JkSW5uZXJDb24gJiYgdmlhMVhDcmRJbm5lckNvbikgdGhlbiAKCQkJICAgICh2aWExRW5jSW5uZXJDb24gPSBhYnMoKGxheWVyMVhDcmRJbm5lckNvbiAtIHZpYTFYQ3JkSW5uZXJDb24pKSkKCQkJKSAKCQkJaWYoKGxheWVyMlhDcmRJbm5lckNvbiAmJiB2aWEyWENyZElubmVyQ29uKSB0aGVuIAoJCQkgICAgKHZpYTJFbmNJbm5lckNvbiA9IGFicygobGF5ZXIxWENyZElubmVyQ29uIC0gdmlhMlhDcmRJbm5lckNvbikpKQoJCQkpIAoJCQlpZigodmlhMUVuY0lubmVyQ29uICYmIHZpYTFFbmNGKSB0aGVuIAoJCQkgICAgKGF2YWlsYWJsZVZpYTFTcGFjZSA9ICh2aWExRW5jSW5uZXJDb24gKyB2aWExRW5jRikpIAoJCQkgICAgaWYoKHZpYTFNaW5TcGFjZSA+IGF2YWlsYWJsZVZpYTFTcGFjZSkgdGhlbiAKCQkJCShyZXF1aXJlZFZpYTFTcCA9ICh2aWExTWluU3BhY2UgLSBhdmFpbGFibGVWaWExU3BhY2UpKSBlbHNlIAoJCQkJKHJlcXVpcmVkVmlhMVNwID0gMCkKCQkJICAgICkKCQkJKSAKCQkJaWYoKHZpYTJFbmNJbm5lckNvbiAmJiB2aWEyRW5jRikgdGhlbiAKCQkJICAgIChhdmFpbGFibGVWaWEyU3BhY2UgPSAodmlhMkVuY0lubmVyQ29uICsgdmlhMkVuY0YpKSAKCQkJICAgIGlmKCh2aWEyTWluU3BhY2UgPiBhdmFpbGFibGVWaWEyU3BhY2UpIHRoZW4gCgkJCQkocmVxdWlyZWRWaWEyU3AgPSAodmlhMk1pblNwYWNlIC0gYXZhaWxhYmxlVmlhMlNwYWNlKSkgZWxzZSAKCQkJCShyZXF1aXJlZFZpYTJTcCA9IDApCgkJCSAgICApCgkJCSkKCQkJd2hlbigocmVxdWlyZWRWaWEyU3AgJiYgcmVxdWlyZWRWaWExU3ApIAoJCQkgICAgKHJlcXVpcmVkU3BhY2UgPSBtYXgocmVxdWlyZWRWaWEyU3AgcmVxdWlyZWRWaWExU3ApKQoJCQkpIAoJCQl3aGVuKCgobm90IHJlcXVpcmVkVmlhMlNwKSAmJiByZXF1aXJlZFZpYTFTcCkgCgkJCSAgICAocmVxdWlyZWRTcGFjZSA9IHJlcXVpcmVkVmlhMVNwKQoJCQkpIAoJCQl3aGVuKChvZmZzZXQgPiAxZS0wNikgCgkJCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkxheWVyIAoJCQkJbGlzdCgoKHgxQ29vcmQgLSBvZmZzZXQpOnkxQ29vcmQpIAoJCQkJICAgICh4MUNvb3JkOncpCgkJCQkpCgkJCSAgICApIAoJCQkgICAgd2hlbigoZGlmZkltcGxhbnQgJiYgaW1wbGFudCkgCgkJCQkoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkltcGxhbnQgCgkJCQkgICAgbGlzdChsaXN0KCh4MUNvb3JkIC0gb2Zmc2V0KSAKCQkJCQkgICAgKHkxQ29vcmQgLSBkaWZmSW1wRW5jKQoJCQkJCSkgCgkJCQkJbGlzdCh4MUNvb3JkIAoJCQkJCSAgICAodyArIGRpZmZJbXBFbmMpCgkJCQkJKQoJCQkJICAgICkKCQkJCSkKCQkJICAgICkgCgkJCSAgICB3aGVuKChkaWZmQ29yZUltcGxhbnQgJiYgaW1wbGFudCkgCgkJCQkoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkNvcmVJbXBsYW50IAoJCQkJICAgIGxpc3QobGlzdCgoeDFDb29yZCAtIG9mZnNldCkgCgkJCQkJICAgICh5MUNvb3JkIC0gZGlmZkNvcmVJbXBFbmMpCgkJCQkJKSAKCQkJCQlsaXN0KHgxQ29vcmQgCgkJCQkJICAgICh3ICsgZGlmZkNvcmVJbXBFbmMpCgkJCQkJKQoJCQkJICAgICkKCQkJCSkKCQkJICAgICkKCQkJKSAKCQkJd2hlbigoKHNhIC0gY29udGFjdEZMZW5ndGgpID49IChvZmZzZXQgKyByZXF1aXJlZFNwYWNlICsgaW5uZXJDb250YWN0TGVuZ3RoKSkgCgkJCSAgICAoY29udGFjdElkID0gaW5uZXJDb250YWN0SWQpIAoJCQkgICAgKGluc3QgPSAoZGJDcmVhdGVQYXJhbUluc3QgdGNDZWxsVmlldyBjb250YWN0SWQgImMwIiAKCQkJCSAgICAoKC0gb2Zmc2V0KTowKQoJCQkJICAgICJNWSIgMSBpbnN0UGFyYW1zCgkJCQkpKSAKCQkJICAgIHVubGVzcyhpbnN0IAoJCQkJZXJyb3Ioc3ByaW50ZihuaWwgIkZhaWxlZCB0byBjcmVhdGUgaW5zdGFuY2Ugb2YgYCVzJyIgaW5uZXJDb250YWN0KSkKCQkJICAgICkgCgkJCSAgICAoc3RyYXBwZWRDb250YWN0SWQgPSAoZGJPcGVuQ2VsbFZpZXcgCgkJCQkgICAgKHRjQ2VsbFZpZXd+PmxpYikgZmlyc3RDb250YWN0ICJzeW1ib2xpYyIgbmlsCgkJCQkgICAgInJuIgoJCQkJKSkKCQkJICAgIHVubGVzcygoc3RyYXBwZWRDb250YWN0SWR+PmlzUGFyYW1DZWxsKSAKCQkJCWVycm9yKHNwcmludGYobmlsICJOYW1lZCBjZWxsIGlzIG5vdCBhIHBjZWxsIGAlcyciIGZpcnN0Q29udGFjdCkpCgkJCSAgICApIAoJCQkgICAgKHN0cmFwcGVkQ29udGFjdEluc3QgPSAoZGJDcmVhdGVQYXJhbUluc3QgdGNDZWxsVmlldyBzdHJhcHBlZENvbnRhY3RJZCBuaWwgCgkJCQkgICAgKCgtIChzYSAtIGNvbnRhY3RGTGVuZ3RoKSk6MCkKCQkJCSAgICAiTVkiIDEgaW5zdFBhcmFtcwoJCQkJKSkgCgkJCSAgICB1bmxlc3Moc3RyYXBwZWRDb250YWN0SW5zdCAKCQkJCWVycm9yKHNwcmludGYobmlsICJGYWlsZWQgdG8gY3JlYXRlIGluc3RhbmNlIG9mIGAlcyciIGZpcnN0Q29udGFjdCkpCgkJCSAgICApIAoJCQkgICAgKGRiQ2xvc2Ugc3RyYXBwZWRDb250YWN0SWQpIAoJCQkgICAgKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZMYXllciAKCQkJCWxpc3QoKCh4MUNvb3JkIC0gKHNhIC0gY29udGFjdEZMZW5ndGgpKTp5MUNvb3JkKSAKCQkJCSAgICAoKHgxQ29vcmQgLSAob2Zmc2V0ICsgaW5uZXJDb250YWN0TGVuZ3RoKSk6dykKCQkJCSkKCQkJICAgICkKCQkJICAgIHdoZW4oKGRpZmZJbXBsYW50ICYmIGltcGxhbnQpIAoJCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZJbXBsYW50IAoJCQkJICAgIGxpc3QobGlzdCgoeDFDb29yZCAtIChzYSAtIGNvbnRhY3RGTGVuZ3RoKSkgCgkJCQkJICAgICh5MUNvb3JkIC0gZGlmZkltcEVuYykKCQkJCQkpIAoJCQkJCWxpc3QoKHgxQ29vcmQgLSAob2Zmc2V0ICsgaW5uZXJDb250YWN0TGVuZ3RoKSkgCgkJCQkJICAgICh3ICsgZGlmZkltcEVuYykKCQkJCQkpCgkJCQkgICAgKQoJCQkJKQoJCQkgICAgKSAKCQkJICAgIHdoZW4oKGRpZmZDb3JlSW1wbGFudCAmJiBpbXBsYW50KSAKCQkJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmQ29yZUltcGxhbnQgCgkJCQkgICAgbGlzdChsaXN0KCh4MUNvb3JkIC0gKHNhIC0gY29udGFjdEZMZW5ndGgpKSAKCQkJCQkgICAgKHkxQ29vcmQgLSBkaWZmQ29yZUltcEVuYykKCQkJCQkpIAoJCQkJCWxpc3QoKHgxQ29vcmQgLSAob2Zmc2V0ICsgaW5uZXJDb250YWN0TGVuZ3RoKSkgCgkJCQkJICAgICh3ICsgZGlmZkNvcmVJbXBFbmMpCgkJCQkJKQoJCQkJICAgICkKCQkJCSkKCQkJICAgICkKCQkJKSAKCQkJdW5sZXNzKCgoc2EgLSBjb250YWN0Rkxlbmd0aCkgPj0gKG9mZnNldCArIHJlcXVpcmVkU3BhY2UgKyBpbm5lckNvbnRhY3RMZW5ndGgpKSAKCQkJICAgIChkYkNsb3NlIGlubmVyQ29udGFjdElkKSAKCQkJICAgIChzdHJhcHBlZENvbnRhY3RJZCA9IChkYk9wZW5DZWxsVmlldyAKCQkJCSAgICAodGNDZWxsVmlld34+bGliKSBmaXJzdENvbnRhY3QgInN5bWJvbGljIiBuaWwKCQkJCSAgICAicm4iCgkJCQkpKSAKCQkJICAgIHVubGVzcygoc3RyYXBwZWRDb250YWN0SWR+PmlzUGFyYW1DZWxsKSAKCQkJCWVycm9yKHNwcmludGYobmlsICJOYW1lZCBjZWxsIGlzIG5vdCBhIHBjZWxsIGAlcyciIGZpcnN0Q29udGFjdCkpCgkJCSAgICApIAoJCQkgICAgKHN0cmFwcGVkQ29udGFjdEluc3QgPSAoZGJDcmVhdGVQYXJhbUluc3QgdGNDZWxsVmlldyBzdHJhcHBlZENvbnRhY3RJZCBuaWwgCgkJCQkgICAgKCgtIChzYSAtIGNvbnRhY3RGTGVuZ3RoKSk6MCkKCQkJCSAgICAiTVkiIDEgaW5zdFBhcmFtcwoJCQkJKSkKCQkJICAgIHVubGVzcyhzdHJhcHBlZENvbnRhY3RJbnN0IAoJCQkJZXJyb3Ioc3ByaW50ZihuaWwgIkZhaWxlZCB0byBjcmVhdGUgaW5zdGFuY2Ugb2YgYCVzJyIgZmlyc3RDb250YWN0KSkKCQkJICAgICkgCgkJCSAgICAoY29udGFjdElkID0gc3RyYXBwZWRDb250YWN0SWQpIAoJCQkgICAgKGluc3QgPSBzdHJhcHBlZENvbnRhY3RJbnN0KSAKCQkJICAgIChkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmTGF5ZXIgCgkJCQlsaXN0KCgoeDFDb29yZCAtIChzYSAtIGNvbnRhY3RGTGVuZ3RoKSk6eTFDb29yZCkgCgkJCQkgICAgKHgxQ29vcmQ6dykKCQkJCSkKCQkJICAgICkgCgkJCSAgICB3aGVuKChkaWZmSW1wbGFudCAmJiBpbXBsYW50KSAKCQkJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmSW1wbGFudCAKCQkJCSAgICBsaXN0KGxpc3QoKHgxQ29vcmQgLSAoc2EgLSBjb250YWN0Rkxlbmd0aCkpIAoJCQkJCSAgICAoeTFDb29yZCAtIGRpZmZJbXBFbmMpCgkJCQkJKSAKCQkJCQlsaXN0KHgxQ29vcmQgCgkJCQkJICAgICh3ICsgZGlmZkltcEVuYykKCQkJCQkpCgkJCQkgICAgKQoJCQkJKQoJCQkgICAgKQoJCQkgICAgd2hlbigoZGlmZkNvcmVJbXBsYW50ICYmIGltcGxhbnQpIAoJCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZDb3JlSW1wbGFudCAKCQkJCSAgICBsaXN0KGxpc3QoKHgxQ29vcmQgLSAoc2EgLSBjb250YWN0Rkxlbmd0aCkpIAoJCQkJCSAgICAoeTFDb29yZCAtIGRpZmZDb3JlSW1wRW5jKQoJCQkJCSkgCgkJCQkJbGlzdCh4MUNvb3JkIAoJCQkJCSAgICAodyArIGRpZmZDb3JlSW1wRW5jKQoJCQkJCSkKCQkJCSAgICApCgkJCQkpCgkJCSAgICApCgkJCSkKCQkgICAgKSAKCQkgICAgdW5sZXNzKGlzU2luZ2xlU3RyYXBwZWQgCgkJCXdoZW4oKCgoc2EgPiAxZS0wNikgfHwgKG9mZnNldCA+PSAwLjApKSAmJiAoc2EgPiAob2Zmc2V0ICsgY29udGFjdEZMZW5ndGgpKSkgCgkJCSAgICB3aGVuKChvZmZzZXQgPiAxZS0wNikgCgkJCQkoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkxheWVyIAoJCQkJICAgIGxpc3QoKCh4MUNvb3JkIC0gb2Zmc2V0KTp5MUNvb3JkKSAKCQkJCQkoeDFDb29yZDp3KQoJCQkJICAgICkKCQkJCSkKCQkJICAgICkgCgkJCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkxheWVyIAoJCQkJbGlzdCgoKHgxQ29vcmQgLSBvZmZzZXQgLSBjb250YWN0Rkxlbmd0aCAtIChzYSAtIGNvbnRhY3RGTGVuZ3RoIC0gb2Zmc2V0KSk6eTFDb29yZCkgCgkJCQkgICAgKCh4MUNvb3JkIC0gb2Zmc2V0IC0gY29udGFjdEZMZW5ndGgpOncpCgkJCQkpCgkJCSAgICApIAoJCQkgICAgd2hlbigoZGlmZkltcGxhbnQgJiYgaW1wbGFudCkgCgkJCQl3aGVuKChvZmZzZXQgPiAxZS0wNikgCgkJCQkgICAgKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZJbXBsYW50IAoJCQkJCWxpc3QobGlzdCgoeDFDb29yZCAtIG9mZnNldCkgCgkJCQkJCSh5MUNvb3JkIC0gZGlmZkltcEVuYykKCQkJCQkgICAgKSAKCQkJCQkgICAgbGlzdCh4MUNvb3JkIAoJCQkJCQkodyArIGRpZmZJbXBFbmMpCgkJCQkJICAgICkKCQkJCQkpCgkJCQkgICAgKQoJCQkJKSAKCQkJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmSW1wbGFudCAKCQkJCSAgICBsaXN0KGxpc3QoKHgxQ29vcmQgLSBvZmZzZXQgLSBjb250YWN0Rkxlbmd0aCAtIChzYSAtIGNvbnRhY3RGTGVuZ3RoIC0gb2Zmc2V0KSAtIGRpZmZJbXBFbmMpIAoJCQkJCSAgICAoeTFDb29yZCAtIGRpZmZJbXBFbmMpCgkJCQkJKSAKCQkJCQlsaXN0KCh4MUNvb3JkIC0gb2Zmc2V0IC0gY29udGFjdEZMZW5ndGgpIAoJCQkJCSAgICAodyArIGRpZmZJbXBFbmMpCgkJCQkJKQoJCQkJICAgICkKCQkJCSkKCQkJICAgICkgCgkJCSAgICB3aGVuKChkaWZmQ29yZUltcGxhbnQgJiYgaW1wbGFudCkgCgkJCQl3aGVuKChvZmZzZXQgPiAxZS0wNikgCgkJCQkgICAgKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZDb3JlSW1wbGFudCAKCQkJCQlsaXN0KGxpc3QoKHgxQ29vcmQgLSBvZmZzZXQpIAoJCQkJCQkoeTFDb29yZCAtIGRpZmZDb3JlSW1wRW5jKQoJCQkJCSAgICApIAoJCQkJCSAgICBsaXN0KHgxQ29vcmQgCgkJCQkJCSh3ICsgZGlmZkNvcmVJbXBFbmMpCgkJCQkJICAgICkKCQkJCQkpCgkJCQkgICAgKQoJCQkJKSAKCQkJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmQ29yZUltcGxhbnQgCgkJCQkgICAgbGlzdChsaXN0KCh4MUNvb3JkIC0gb2Zmc2V0IC0gY29udGFjdEZMZW5ndGggLSAoc2EgLSBjb250YWN0Rkxlbmd0aCAtIG9mZnNldCkgLSBkaWZmQ29yZUltcEVuYykgCgkJCQkJICAgICh5MUNvb3JkIC0gZGlmZkNvcmVJbXBFbmMpCgkJCQkJKSAKCQkJCQlsaXN0KCh4MUNvb3JkIC0gb2Zmc2V0IC0gY29udGFjdEZMZW5ndGgpIAoJCQkJCSAgICAodyArIGRpZmZDb3JlSW1wRW5jKQoJCQkJCSkKCQkJCSAgICApCgkJCQkpCgkJCSAgICApCgkJCSkgCgkJCXdoZW4oKCgob2Zmc2V0ID4gMWUtMDYpICYmIChzYSA9PSAwLjApICYmICgob2Zmc2V0ICsgY29udGFjdEZMZW5ndGgpID49IHNhKSkgfHwgKChvZmZzZXQgPiAxZS0wNikgJiYgKHNhID4gMWUtMDYpICYmICgob2Zmc2V0ICsgY29udGFjdEZMZW5ndGgpID49IHNhKSkpIAoJCQkgICAgKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZMYXllciAKCQkJCWxpc3QoKCh4MUNvb3JkIC0gb2Zmc2V0KTp5MUNvb3JkKSAKCQkJCSAgICAoeDFDb29yZDp3KQoJCQkJKQoJCQkgICAgKSAKCQkJICAgIHdoZW4oKGRpZmZJbXBsYW50ICYmIGltcGxhbnQpIAoJCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZJbXBsYW50IAoJCQkJICAgIGxpc3QobGlzdCgoeDFDb29yZCAtIG9mZnNldCkgCgkJCQkJICAgICh5MUNvb3JkIC0gZGlmZkltcEVuYykKCQkJCQkpIAoJCQkJCWxpc3QoeDFDb29yZCAKCQkJCQkgICAgKHcgKyBkaWZmSW1wRW5jKQoJCQkJCSkKCQkJCSAgICApCgkJCQkpCgkJCSAgICApIAoJCQkgICAgd2hlbigoZGlmZkNvcmVJbXBsYW50ICYmIGltcGxhbnQpIAoJCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZDb3JlSW1wbGFudCAKCQkJCSAgICBsaXN0KGxpc3QoKHgxQ29vcmQgLSBvZmZzZXQpIAoJCQkJCSAgICAoeTFDb29yZCAtIGRpZmZDb3JlSW1wRW5jKQoJCQkJCSkgCgkJCQkJbGlzdCh4MUNvb3JkIAoJCQkJCSAgICAodyArIGRpZmZDb3JlSW1wRW5jKQoJCQkJCSkKCQkJCSAgICApCgkJCQkpCgkJCSAgICApCgkJCSkKCQkgICAgKQoJCSkgCgkJd2hlbigobm90IG1hbnVhbExPRCkgCgkJICAgIHVubGVzcygoYnV0dGluZ0dhdGVzU0EgPj0gMCkgCgkJCXdhcm4oc3ByaW50ZihuaWwgIkNhbm5vdCBzcGVjaWZ5IG5vbi16ZXJvIG51bWJlciBvZiBidXR0aW5nIGdhdGVzIGZvciBTQSAlTFxuIiBidXR0aW5nR2F0ZXNTQSkpCgkJICAgICkgCgkJICAgIHVubGVzcygoYnV0dGluZ0dhdGVzU0EgPj0gMSkgCgkJCShleHRlbnNpb24gPSAob2Zmc2V0ICsgY29udGFjdEZMZW5ndGgpKQoJCSAgICApIAoJCSAgICB3aGVuKChvZmZzZXQgPiAxZS0wNikgCgkJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmTGF5ZXIgCgkJCSAgICBsaXN0KCgoeDFDb29yZCAtIG9mZnNldCk6eTFDb29yZCkgCgkJCQkoeDFDb29yZDp3KQoJCQkgICAgKQoJCQkpCgkJICAgICkgCgkJICAgIHdoZW4oKG9mZnNldCA+IDFlLTA2KSAKCQkJd2hlbigoZGlmZkltcGxhbnQgJiYgaW1wbGFudCkgCgkJCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkltcGxhbnQgCgkJCQlsaXN0KGxpc3QoKHgxQ29vcmQgLSBvZmZzZXQpIAoJCQkJCSh5MUNvb3JkIC0gZGlmZkltcEVuYykKCQkJCSAgICApIAoJCQkJICAgIGxpc3QoeDFDb29yZCAKCQkJCQkoeTFDb29yZCArIHcgKyBkaWZmSW1wRW5jKQoJCQkJICAgICkKCQkJCSkKCQkJICAgICkKCQkJKSAKCQkJd2hlbigoZGlmZkNvcmVJbXBsYW50ICYmIGltcGxhbnQpIAoJCQkgICAgKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZDb3JlSW1wbGFudCAKCQkJCWxpc3QobGlzdCgoeDFDb29yZCAtIG9mZnNldCkgCgkJCQkJKHkxQ29vcmQgLSBkaWZmQ29yZUltcEVuYykKCQkJCSAgICApIAoJCQkJICAgIGxpc3QoeDFDb29yZCAKCQkJCQkoeTFDb29yZCArIHcgKyBkaWZmQ29yZUltcEVuYykKCQkJCSAgICApCgkJCQkpCgkJCSAgICApCgkJCSkKCQkgICAgKQoJCSAgICB3aGVuKChidXR0aW5nR2F0ZXNTQSA+PSAwKSAKCQkJd2hlbigoYnV0dGluZ0dhdGVzU0EgPj0gMSkgCgkJCSAgICB3aGVuKExPRENvbnRhY3RNYXBTU3RyYXBwZWQgCgkJCQlmb3JlYWNoKHBhaXIgTE9EQ29udGFjdE1hcFNTdHJhcHBlZCAKCQkJCSAgICB3aGVuKChmaXJzdENvbnRhY3QgPT0gY2FyKHBhaXIpKSAKCQkJCQkoaXNTaW5nbGVTdHJhcHBlZCA9IHQpIAoJCQkJCShpbm5lckNvbnRhY3QgPSBjZHIocGFpcikpCgkJCQkgICAgKQoJCQkJKQoJCQkgICAgKSAKCQkJICAgIHdoZW4oTE9EQ29udGFjdE1hcE5EU3RyYXBwZWQgCgkJCQlmb3JlYWNoKHBhaXIgTE9EQ29udGFjdE1hcE5EU3RyYXBwZWQgCgkJCQkgICAgd2hlbigoZmlyc3RDb250YWN0ID09IGNhcihwYWlyKSkgCgkJCQkJKGlzTkRTdHJhcHBlZCA9IHQpIAoJCQkJCShvdXRlckNvbnRhY3QgPSBjZHIocGFpcikpCgkJCQkgICAgKQoJCQkJKQoJCQkgICAgKQoJCQkpIAoJCQl3aGVuKChpc1NpbmdsZVN0cmFwcGVkICYmIChidXR0aW5nR2F0ZXNTQSA+PSAxKSkgCgkJCSAgICAoZGJEZWxldGVPYmplY3QgaW5zdCkgCgkJCSAgICAoZGJDbG9zZSBjb250YWN0SWQpIAoJCQkgICAgKGNvbnRhY3RJZCA9IChkYk9wZW5DZWxsVmlldyAKCQkJCSAgICAodGNDZWxsVmlld34+bGliKSAKCQkJCSAgICBjYXIoaW5uZXJDb250YWN0KSAic3ltYm9saWMiIG5pbAoJCQkJICAgICJybiIKCQkJCSkpIAoJCQkgICAgdW5sZXNzKChjb250YWN0SWR+PmlzUGFyYW1DZWxsKSAKCQkJCWVycm9yKHNwcmludGYobmlsICJOYW1lZCBjZWxsIGlzIG5vdCBhIHBjZWxsIGAlcyciIGlubmVyQ29udGFjdCkpCgkJCSAgICApCgkJCSAgICAoaW5zdCA9IChkYkNyZWF0ZVBhcmFtSW5zdCB0Y0NlbGxWaWV3IGNvbnRhY3RJZCAiYzAiIAoJCQkJICAgICgoLSBvZmZzZXQpOjApCgkJCQkgICAgIk1ZIiAxIGluc3RQYXJhbXMKCQkJCSkpIAoJCQkgICAgdW5sZXNzKGluc3QgCgkJCQllcnJvcihzcHJpbnRmKG5pbCAiRmFpbGVkIHRvIGNyZWF0ZSBpbnN0YW5jZSBvZiBgJXMnIiBpbm5lckNvbnRhY3QpKQoJCQkgICAgKSAKCQkJICAgIChpbm5lckNvbnRhY3RMZW5ndGggPSAoY2FhZHIoKGNvbnRhY3RJZH4+ZGlmZkxheWVyQmJveCkpIC0gY2FhcigoY29udGFjdElkfj5kaWZmTGF5ZXJCYm94KSkpKSAKCQkJICAgIHdoZW4oKGJ1dHRpbmdHYXRlc1NBID49IDEpIAoJCQkJd2hlbigobW9kKGJ1dHRpbmdHYXRlc1NBIDIpID09IDApIAoJCQkJICAgIChleHRlbnNpb24gPSAoaW5uZXJDb250YWN0TGVuZ3RoICsgKDIgKiBjdXJUZXJtT2Zmc2V0KSArICgoKGJ1dHRpbmdHYXRlc1NBIC8gMikgLSAxKSAqIGN1clRlcm1TaENvbkxlbmd0aCkgKyAoKGJ1dHRpbmdHYXRlc1NBIC0gMikgKiBjdXJUZXJtT2Zmc2V0KSArICgoYnV0dGluZ0dhdGVzU0EgLyAyKSAqIG5leHRUZXJtU2hDb25MZW5ndGgpICsgKGJ1dHRpbmdHYXRlc1NBICogbmV4dFRlcm1PZmZzZXQpICsgKGNvbnRhY3RGTGVuZ3RoICsgY3VyVGVybU9mZnNldCkgKyAoYnV0dGluZ0dhdGVzU0EgKiBsKSkpCgkJCQkpIAoJCQkJdW5sZXNzKChtb2QoYnV0dGluZ0dhdGVzU0EgMikgPT0gMCkgCgkJCQkgICAgKGV4dGVuc2lvbiA9IChpbm5lckNvbnRhY3RMZW5ndGggKyAoMiAqIGN1clRlcm1PZmZzZXQpICsgKCgoYnV0dGluZ0dhdGVzU0EgLSAxKSAvIDIpICogY3VyVGVybVNoQ29uTGVuZ3RoKSArICgoYnV0dGluZ0dhdGVzU0EgLSAxKSAqIGN1clRlcm1PZmZzZXQpICsgKCgoYnV0dGluZ0dhdGVzU0EgLSAxKSAvIDIpICogbmV4dFRlcm1TaENvbkxlbmd0aCkgKyAoKGJ1dHRpbmdHYXRlc1NBIC0gMSkgKiBuZXh0VGVybU9mZnNldCkgKyAoY29udGFjdEZMZW5ndGggKyBuZXh0VGVybU9mZnNldCkgKyAoYnV0dGluZ0dhdGVzU0EgKiBsKSkpCgkJCQkpCgkJCSAgICApIAoJCQkgICAgKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZMYXllciAKCQkJCWxpc3QoKCgtIChleHRlbnNpb24gLSBjb250YWN0Rkxlbmd0aCkpOnkxQ29vcmQpIAoJCQkJICAgICgoLSAob2Zmc2V0ICsgaW5uZXJDb250YWN0TGVuZ3RoKSk6dykKCQkJCSkKCQkJICAgICkKCQkJICAgIChvdXRlckNvbnRhY3RJZCA9IChkYk9wZW5DZWxsVmlldyAKCQkJCSAgICAodGNDZWxsVmlld34+bGliKSBmaXJzdENvbnRhY3QgInN5bWJvbGljIiBuaWwKCQkJCSAgICAicm4iCgkJCQkpKSAKCQkJICAgIHVubGVzcygob3V0ZXJDb250YWN0SWR+PmlzUGFyYW1DZWxsKSAKCQkJCWVycm9yKHNwcmludGYobmlsICJOYW1lZCBjZWxsIGlzIG5vdCBhIHBjZWxsIGAlcyciIGZpcnN0Q29udGFjdCkpCgkJCSAgICApIAoJCQkgICAgKG91dGVySW5zdCA9IChkYkNyZWF0ZVBhcmFtSW5zdCB0Y0NlbGxWaWV3IG91dGVyQ29udGFjdElkIG5pbCAKCQkJCSAgICAoKC0gKGV4dGVuc2lvbiAtIGNvbnRhY3RGTGVuZ3RoKSk6MCkKCQkJCSAgICAiTVkiIDEgaW5zdFBhcmFtcwoJCQkJKSkgCgkJCSAgICB1bmxlc3Mob3V0ZXJJbnN0IAoJCQkJZXJyb3Ioc3ByaW50ZihuaWwgIkZhaWxlZCB0byBjcmVhdGUgaW5zdGFuY2Ugb2YgYCVzJyIgZmlyc3RDb250YWN0KSkKCQkJICAgICkgCgkJCSAgICB3aGVuKChkaWZmSW1wbGFudCAmJiBpbXBsYW50KSAKCQkJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmSW1wbGFudCAKCQkJCSAgICBsaXN0KGxpc3QoKHgxQ29vcmQgLSAoZXh0ZW5zaW9uIC0gY29udGFjdEZMZW5ndGgpKSAKCQkJCQkgICAgKHkxQ29vcmQgLSBkaWZmSW1wRW5jKQoJCQkJCSkgCgkJCQkJbGlzdCgoeDFDb29yZCAtIG9mZnNldCAtIGlubmVyQ29udGFjdExlbmd0aCkgCgkJCQkJICAgICh5MUNvb3JkICsgdyArIGRpZmZJbXBFbmMpCgkJCQkJKQoJCQkJICAgICkKCQkJCSkKCQkJICAgICkKCQkJICAgIHdoZW4oKGRpZmZDb3JlSW1wbGFudCAmJiBpbXBsYW50KSAKCQkJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmQ29yZUltcGxhbnQgCgkJCQkgICAgbGlzdChsaXN0KCh4MUNvb3JkIC0gKGV4dGVuc2lvbiAtIGNvbnRhY3RGTGVuZ3RoKSkgCgkJCQkJICAgICh5MUNvb3JkIC0gZGlmZkNvcmVJbXBFbmMpCgkJCQkJKSAKCQkJCQlsaXN0KCh4MUNvb3JkIC0gb2Zmc2V0IC0gaW5uZXJDb250YWN0TGVuZ3RoKSAKCQkJCQkgICAgKHkxQ29vcmQgKyB3ICsgZGlmZkNvcmVJbXBFbmMpCgkJCQkJKQoJCQkJICAgICkKCQkJCSkKCQkJICAgICkKCQkJKSAKCQkJd2hlbigoKG5vdCBpc1NpbmdsZVN0cmFwcGVkKSAmJiAKCQkJCShidXR0aW5nR2F0ZXNTQSA+PSAxKSkgCgkJCSAgICAob3V0ZXJDb250YWN0SWQgPSAoZGJPcGVuQ2VsbFZpZXcgCgkJCQkgICAgKHRjQ2VsbFZpZXd+PmxpYikgCgkJCQkgICAgY2FyKG91dGVyQ29udGFjdCkgInN5bWJvbGljIiBuaWwKCQkJCSAgICAicm4iCgkJCQkpKSAKCQkJICAgIHVubGVzcygob3V0ZXJDb250YWN0SWR+PmlzUGFyYW1DZWxsKSAKCQkJCWVycm9yKHNwcmludGYobmlsICJOYW1lZCBjZWxsIGlzIG5vdCBhIHBjZWxsIGAlcyciIG91dGVyQ29udGFjdCkpCgkJCSAgICApIAoJCQkgICAgKG91dGVyQ29udGFjdExlbmd0aCA9IChjYWFkcigob3V0ZXJDb250YWN0SWR+PmRpZmZMYXllckJib3gpKSAtIGNhYXIoKG91dGVyQ29udGFjdElkfj5kaWZmTGF5ZXJCYm94KSkpKSAKCQkJICAgIHdoZW4oKGJ1dHRpbmdHYXRlc1NBID49IDEpIAoJCQkJd2hlbigobW9kKGJ1dHRpbmdHYXRlc1NBIDIpID09IDApIAoJCQkJICAgIChleHRlbnNpb24gPSAoY29udGFjdEZMZW5ndGggKyAoMiAqIGN1clRlcm1PZmZzZXQpICsgKCgoYnV0dGluZ0dhdGVzU0EgLyAyKSAtIDEpICogY3VyVGVybVNoQ29uTGVuZ3RoKSArICgoYnV0dGluZ0dhdGVzU0EgLSAyKSAqIGN1clRlcm1PZmZzZXQpICsgKChidXR0aW5nR2F0ZXNTQSAvIDIpICogbmV4dFRlcm1TaENvbkxlbmd0aCkgKyAoYnV0dGluZ0dhdGVzU0EgKiBuZXh0VGVybU9mZnNldCkgKyAob3V0ZXJDb250YWN0TGVuZ3RoICsgY3VyVGVybU9mZnNldCkgKyAoYnV0dGluZ0dhdGVzU0EgKiBsKSkpCgkJCQkpIAoJCQkJdW5sZXNzKChtb2QoYnV0dGluZ0dhdGVzU0EgMikgPT0gMCkgCgkJCQkgICAgKGV4dGVuc2lvbiA9IChjb250YWN0Rkxlbmd0aCArICgyICogY3VyVGVybU9mZnNldCkgKyAoKChidXR0aW5nR2F0ZXNTQSAtIDEpIC8gMikgKiBjdXJUZXJtU2hDb25MZW5ndGgpICsgKChidXR0aW5nR2F0ZXNTQSAtIDEpICogY3VyVGVybU9mZnNldCkgKyAoKChidXR0aW5nR2F0ZXNTQSAtIDEpIC8gMikgKiBuZXh0VGVybVNoQ29uTGVuZ3RoKSArICgoYnV0dGluZ0dhdGVzU0EgLSAxKSAqIG5leHRUZXJtT2Zmc2V0KSArIChvdXRlckNvbnRhY3RMZW5ndGggKyBuZXh0VGVybU9mZnNldCkgKyAoYnV0dGluZ0dhdGVzU0EgKiBsKSkpCgkJCQkpCgkJCSAgICApCgkJCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkxheWVyIAoJCQkJbGlzdCgoKHgxQ29vcmQgLSBleHRlbnNpb24pOnkxQ29vcmQpIAoJCQkJICAgICgoeDFDb29yZCAtIG9mZnNldCAtIGNvbnRhY3RGTGVuZ3RoKTp3KQoJCQkJKQoJCQkgICAgKSAKCQkJICAgIHdoZW4oKGRpZmZJbXBsYW50ICYmIGltcGxhbnQpIAoJCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZJbXBsYW50IAoJCQkJICAgIGxpc3QobGlzdCgoeDFDb29yZCAtIGV4dGVuc2lvbiAtIGRpZmZJbXBFbmMpIAoJCQkJCSAgICAoeTFDb29yZCAtIGRpZmZJbXBFbmMpCgkJCQkJKSAKCQkJCQlsaXN0KCh4MUNvb3JkIC0gb2Zmc2V0IC0gY29udGFjdEZMZW5ndGgpIAoJCQkJCSAgICAoeTFDb29yZCArIHcgKyBkaWZmSW1wRW5jKQoJCQkJCSkKCQkJCSAgICApCgkJCQkpCgkJCSAgICApIAoJCQkgICAgd2hlbigoZGlmZkNvcmVJbXBsYW50ICYmIGltcGxhbnQpIAoJCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZDb3JlSW1wbGFudCAKCQkJCSAgICBsaXN0KGxpc3QoKHgxQ29vcmQgLSBleHRlbnNpb24gLSBkaWZmQ29yZUltcEVuYykgCgkJCQkJICAgICh5MUNvb3JkIC0gZGlmZkNvcmVJbXBFbmMpCgkJCQkJKSAKCQkJCQlsaXN0KCh4MUNvb3JkIC0gb2Zmc2V0IC0gY29udGFjdEZMZW5ndGgpIAoJCQkJCSAgICAoeTFDb29yZCArIHcgKyBkaWZmQ29yZUltcEVuYykKCQkJCQkpCgkJCQkgICAgKQoJCQkJKQoJCQkgICAgKQoJCQkpCgkJICAgICkKCQkpCgkgICAgKSAKCSAgICAobWFzdGVyID0gKGluc3R+Pm1hc3RlcikpIAoJICAgIHVubGVzcygoKG1hc3Rlcn4+dG9wTGF5ZXIpICYmIChtYXN0ZXJ+PnRvcExheWVyUGluQmJveCkpIAoJCWVycm9yKHNwcmludGYobmlsICJNaXNzaW5nIHRvcExheWVyIGFuZC9vciB0b3BMYXllclBpbkJib3ggY2VsbCBwcm9wZXJ0aWVzIGluIGAlcyciIGZpcnN0Q29udGFjdCkpCgkgICAgKSAKCSAgICAoYkJveCA9IGxpc3QobGlzdCgoLSAob2Zmc2V0ICsgY2FhcigobWFzdGVyfj50b3BMYXllclBpbkJib3gpKSkpIAoJCQljYWRhcigobWFzdGVyfj50b3BMYXllclBpbkJib3gpKQoJCSAgICApIAoJCSAgICBsaXN0KCgtIChvZmZzZXQgKyBjYWFkcigobWFzdGVyfj50b3BMYXllclBpbkJib3gpKSkpIAoJCQljYWRhZHIoKG1hc3Rlcn4+dG9wTGF5ZXJQaW5CYm94KSkKCQkgICAgKQoJCSkpCgkgICAgd2hlbigobG9kRW5hYmxlZCAmJiBtYW51YWxMT0QgJiYgaXNTaW5nbGVTdHJhcHBlZCkgCgkJdW5sZXNzKCgoc2EgLSBjb250YWN0Rkxlbmd0aCkgPj0gKG9mZnNldCArIHJlcXVpcmVkU3BhY2UgKyBpbm5lckNvbnRhY3RMZW5ndGgpKSAKCQkgICAgKGJCb3ggPSBsaXN0KGxpc3QoKC0gKChzYSAtIGNvbnRhY3RGTGVuZ3RoKSArIGNhYXIoKG1hc3Rlcn4+dG9wTGF5ZXJQaW5CYm94KSkpKSAKCQkJCWNhZGFyKChtYXN0ZXJ+PnRvcExheWVyUGluQmJveCkpCgkJCSAgICApIAoJCQkgICAgbGlzdCgoLSAoKHNhIC0gY29udGFjdEZMZW5ndGgpICsgY2FhZHIoKG1hc3Rlcn4+dG9wTGF5ZXJQaW5CYm94KSkpKSAKCQkJCWNhZGFkcigobWFzdGVyfj50b3BMYXllclBpbkJib3gpKQoJCQkgICAgKQoJCQkpKQoJCSkKCSAgICApIAoJICAgIChkYmlkID0gKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IAoJCSAgICAobWFzdGVyfj50b3BMYXllcikgYkJveAoJCSkpIAoJICAgIChwaW5pZCA9IChkYkNyZWF0ZVBpbiBjTmV0IGRiaWQpKSAKCSAgICBzZXRTR3EocGluaWQgCgkJbGlzdCgidG9wIiAiYm90dG9tIiAibGVmdCIpIGFjY2Vzc0RpcgoJICAgICkgCgkgICAgd2hlbihsYWJlbExheWVyIAoJCShkYkNyZWF0ZUxhYmVsIHRjQ2VsbFZpZXcgbGFiZWxMYXllciAKCQkgICAgbGlzdCgoY2FhcihiQm94KSArICgoY2FhZHIoYkJveCkgLSBjYWFyKGJCb3gpKSAvIDIuMCkpIAoJCQkoY2FkYXIoYkJveCkgKyAoKGNhZGFkcihiQm94KSAtIGNhZGFyKGJCb3gpKSAvIDIuMCkpCgkJICAgICkgbmV0TAoJCSAgICAiY2VudGVyQ2VudGVyIiAiUjAiICJyb21hbiIgbGFiZWxXaWR0aAoJCSkKCSAgICApCgkgICAgdW5sZXNzKGxvZEVuYWJsZWQgCgkJd2hlbigod2VsbExheWVyIHx8IGlkTGF5ZXIgfHwgc2VjSWRMYXllcikgCgkJICAgIHVubGVzcygobWFzdGVyfj5kaWZmTGF5ZXJCYm94KSAKCQkJZXJyb3Ioc3ByaW50ZihuaWwgIkNhbm5vdCBmaW5kIGRpZmZMYXllckJib3ggcHJvcGVydHkgZm9yIGAlcyciIGZpcnN0Q29udGFjdCkpCgkJICAgICkgCgkJICAgICh4MURpZmZDb29yZCA9IGNhYWRyKChtYXN0ZXJ+PmRpZmZMYXllckJib3gpKSkgCgkJICAgICh4MVRhcENvb3JkID0gaWYoKG1hc3Rlcn4+dGFwTGF5ZXJCYm94KSAKCQkJICAgIGFicyhjYWFkcigobWFzdGVyfj50YXBMYXllckJib3gpKSkgMC4wCgkJCSkpIAoJCSAgICAoeTJEaWZmQ29vcmQgPSBjYWRhZHIoKG1hc3Rlcn4+ZGlmZkxheWVyQmJveCkpKQoJCSAgICAoeTJUYXBDb29yZCA9IGlmKChtYXN0ZXJ+PnRhcExheWVyQmJveCkgCgkJCSAgICBhYnMoY2FkYWRyKChtYXN0ZXJ+PnRhcExheWVyQmJveCkpKSAwLjAKCQkJKSkgCgkJICAgICh5MURpZmZDb29yZCA9IGNhZGFyKChtYXN0ZXJ+PmRpZmZMYXllckJib3gpKSkgCgkJICAgICh5MVRhcENvb3JkID0gaWYoKG1hc3Rlcn4+dGFwTGF5ZXJCYm94KSAKCQkJICAgIGFicyhjYWRhcigobWFzdGVyfj50YXBMYXllckJib3gpKSkgMC4wCgkJCSkpIAoJCSAgICB3aGVuKHdlbGxMYXllciAKCQkJKHgxV2VsbENvb3JkID0gKC0gKG9mZnNldCArIG1heCgod2VsbEVuY0RpZmZYICsgeDFEaWZmQ29vcmQpIAoJCQkJCSh3ZWxsRW5jVGFwWCArIHgxVGFwQ29vcmQpCgkJCQkgICAgKSkpKSAKCQkJKHkxV2VsbENvb3JkID0gKC0gbWF4KCh3ZWxsRW5jRGlmZlkgKyB5MURpZmZDb29yZCkgCgkJCQkgICAgKHdlbGxFbmNUYXBZICsgeTFUYXBDb29yZCkKCQkJCSkpKSAKCQkJKHkyV2VsbENvb3JkID0gbWF4KCh3ZWxsRW5jRGlmZlkgKyB5MkRpZmZDb29yZCkgCgkJCQkod2VsbEVuY1RhcFkgKyB5MlRhcENvb3JkKQoJCQkgICAgKSkKCQkgICAgKSAKCQkgICAgd2hlbihpZExheWVyIAoJCQlmb3JlYWNoKGxheWVySW5mbyBpZExheWVyc1RhYmxlIAoJCQkgICAgKGxheWVyTmFtZSA9IGNhcihsYXllckluZm8pKSAKCQkJICAgIChsYXllckVuY3MgPSBjYWRyKGxheWVySW5mbykpIAoJCQkgICAgKGlkRW5jWEwgPSBudGgoMCBsYXllckVuY3MpKQoJCQkgICAgKGlkRW5jWFIgPSBudGgoMSBsYXllckVuY3MpKSAKCQkJICAgIChpZEVuY1kgPSBudGgoMiBsYXllckVuY3MpKSAKCQkJICAgICh4MUlkQ29vcmQgPSAoLSAob2Zmc2V0ICsgbWF4KChpZEVuY1hMICsgeDFEaWZmQ29vcmQpIAoJCQkJCSAgICAoaWRFbmNYTCArIHgxVGFwQ29vcmQpCgkJCQkJKSkpKSAKCQkJICAgICh5MUlkQ29vcmQgPSAoLSBtYXgoKGlkRW5jWSArIHkxRGlmZkNvb3JkKSAKCQkJCQkoaWRFbmNZICsgeTFUYXBDb29yZCkKCQkJCSAgICApKSkgCgkJCSAgICAoeTJJZENvb3JkID0gbWF4KChpZEVuY1kgKyB5MkRpZmZDb29yZCkgCgkJCQkgICAgKGlkRW5jWSArIHkyVGFwQ29vcmQpCgkJCQkpKQoJCQkgICAgKGxheWVyQ29vcmRzID0gbGlzdCgoeDFJZENvb3JkOnkxSWRDb29yZCkgCgkJCQkgICAgKHgySWRDb29yZDp5MklkQ29vcmQpCgkJCQkpKSAKCQkJICAgIChpZExheWVyc0Nvb3JkVGFibGVbbGF5ZXJOYW1lXSA9IGxheWVyQ29vcmRzKQoJCQkpCgkJICAgICkKCQkgICAgd2hlbihzZWNJZExheWVyIAoJCQlmb3JlYWNoKHNlY0xheWVySW5mbyBzZWNJZExheWVyc1RhYmxlIAoJCQkgICAgKHNlY0xheWVyTmFtZSA9IGNhcihzZWNMYXllckluZm8pKSAKCQkJICAgIChzZWNMYXllckVuY3MgPSBjYWRyKHNlY0xheWVySW5mbykpIAoJCQkgICAgKHNlY0lkRW5jWEwgPSBudGgoMCBzZWNMYXllckVuY3MpKQoJCQkgICAgKHNlY0lkRW5jWFIgPSBudGgoMSBzZWNMYXllckVuY3MpKSAKCQkJICAgIChzZWNJZEVuY1kgPSBudGgoMiBzZWNMYXllckVuY3MpKSAKCQkJICAgICh4MVNlY0lkQ29vcmQgPSAoLSAob2Zmc2V0ICsgbWF4KChzZWNJZEVuY1hMICsgeDFEaWZmQ29vcmQpIAoJCQkJCSAgICAoc2VjSWRFbmNYTCArIHgxVGFwQ29vcmQpCgkJCQkJKSkpKSAKCQkJICAgICh5MVNlY0lkQ29vcmQgPSAoLSBtYXgoKHNlY0lkRW5jWSArIHkxRGlmZkNvb3JkKSAKCQkJCQkoc2VjSWRFbmNZICsgeTFUYXBDb29yZCkKCQkJCSAgICApKSkgCgkJCSAgICAoeTJTZWNJZENvb3JkID0gbWF4KChzZWNJZEVuY1kgKyB5MkRpZmZDb29yZCkgCgkJCQkgICAgKHNlY0lkRW5jWSArIHkyVGFwQ29vcmQpCgkJCQkpKQoJCQkgICAgKHNlY0xheWVyQ29vcmRzID0gbGlzdCgoeDFTZWNJZENvb3JkOnkxU2VjSWRDb29yZCkgCgkJCQkgICAgKHgyU2VjSWRDb29yZDp5MlNlY0lkQ29vcmQpCgkJCQkpKSAKCQkJICAgIChzZWNJZExheWVyc0Nvb3JkVGFibGVbc2VjTGF5ZXJOYW1lXSA9IHNlY0xheWVyQ29vcmRzKQoJCQkpCgkJICAgICkKCQkpCgkgICAgKSAKCSAgICB3aGVuKGxvZEVuYWJsZWQgCgkJd2hlbigod2VsbExheWVyIHx8IGlkTGF5ZXIgfHwgc2VjSWRMYXllcikgCgkJICAgIHVubGVzcygobWFzdGVyfj5kaWZmTGF5ZXJCYm94KSAKCQkJZXJyb3Ioc3ByaW50ZihuaWwgIkNhbm5vdCBmaW5kIGRpZmZMYXllckJib3ggcHJvcGVydHkgZm9yIGAlcyciIGZpcnN0Q29udGFjdCkpCgkJICAgICkgCgkJICAgICh4MURpZmZDb29yZCA9IGNhYWRyKChtYXN0ZXJ+PmRpZmZMYXllckJib3gpKSkgCgkJICAgICh4MVRhcENvb3JkID0gaWYoKG1hc3Rlcn4+dGFwTGF5ZXJCYm94KSAKCQkJICAgIGFicyhjYWFkcigobWFzdGVyfj50YXBMYXllckJib3gpKSkgMC4wCgkJCSkpIAoJCSAgICAoeTJEaWZmQ29vcmQgPSBjYWRhZHIoKG1hc3Rlcn4+ZGlmZkxheWVyQmJveCkpKQoJCSAgICAoeTJUYXBDb29yZCA9IGlmKChtYXN0ZXJ+PnRhcExheWVyQmJveCkgCgkJCSAgICBhYnMoY2FkYWRyKChtYXN0ZXJ+PnRhcExheWVyQmJveCkpKSAwLjAKCQkJKSkgCgkJICAgICh5MURpZmZDb29yZCA9IGNhZGFyKChtYXN0ZXJ+PmRpZmZMYXllckJib3gpKSkgCgkJICAgICh5MVRhcENvb3JkID0gaWYoKG1hc3Rlcn4+dGFwTGF5ZXJCYm94KSAKCQkJICAgIGFicyhjYWRhcigobWFzdGVyfj50YXBMYXllckJib3gpKSkgMC4wCgkJCSkpIAoJCSAgICB3aGVuKG1hbnVhbExPRCAKCQkJd2hlbih3ZWxsTGF5ZXIgCgkJCSAgICB3aGVuKGlzU2luZ2xlU3RyYXBwZWQgCgkJCQkoeDFXZWxsQ29vcmQgPSAoLSAoKHNhIC0gbWF4KHgxRGlmZkNvb3JkIHgxVGFwQ29vcmQpKSArIAoJCQkJCSAgICBtYXgoKHdlbGxFbmNEaWZmWCArIHgxRGlmZkNvb3JkKSAKCQkJCQkJKHdlbGxFbmNUYXBYICsgeDFUYXBDb29yZCkKCQkJCQkgICAgKSkpKQoJCQkgICAgKSAKCQkJICAgIHVubGVzcyhpc1NpbmdsZVN0cmFwcGVkIAoJCQkJd2hlbigoKChzYSA+IDFlLTA2KSAmJiAob2Zmc2V0ID4gMWUtMDYpICYmIChzYSA+IChvZmZzZXQgKyBjb250YWN0Rkxlbmd0aCkpKSB8fCAoKHNhID4gMWUtMDYpICYmIChvZmZzZXQgPT0gMC4wKSAmJiAoc2EgPj0gKG9mZnNldCArIGNvbnRhY3RGTGVuZ3RoKSkpKSAKCQkJCSAgICAoeDFXZWxsQ29vcmQgPSAoLSAoKHNhIC0gbWF4KHgxRGlmZkNvb3JkIHgxVGFwQ29vcmQpKSArIAoJCQkJCQltYXgoKHdlbGxFbmNEaWZmWCArIHgxRGlmZkNvb3JkKSAKCQkJCQkJICAgICh3ZWxsRW5jVGFwWCArIHgxVGFwQ29vcmQpCgkJCQkJCSkpKSkKCQkJCSkgCgkJCQl3aGVuKCgoKG9mZnNldCA+IDFlLTA2KSAmJiAoc2EgPT0gMC4wKSAmJiAoKG9mZnNldCArIGNvbnRhY3RGTGVuZ3RoKSA+PSBzYSkpIHx8ICgob2Zmc2V0ID4gMWUtMDYpICYmIChzYSA+IDFlLTA2KSAmJiAoKG9mZnNldCArIGNvbnRhY3RGTGVuZ3RoKSA+PSBzYSkpKSAKCQkJCSAgICAoeDFXZWxsQ29vcmQgPSAoLSAob2Zmc2V0ICsgbWF4KCh3ZWxsRW5jRGlmZlggKyB4MURpZmZDb29yZCkgCgkJCQkJCSAgICAod2VsbEVuY1RhcFggKyB4MVRhcENvb3JkKQoJCQkJCQkpKSkpCgkJCQkpCgkJCSAgICApIAoJCQkgICAgKHkxV2VsbENvb3JkID0gKC0gbWF4KCh3ZWxsRW5jRGlmZlkgKyB5MURpZmZDb29yZCkgCgkJCQkJKHdlbGxFbmNUYXBZICsgeTFUYXBDb29yZCkKCQkJCSAgICApKSkgCgkJCSAgICAoeTJXZWxsQ29vcmQgPSBtYXgoKHdlbGxFbmNEaWZmWSArIHkyRGlmZkNvb3JkKSAKCQkJCSAgICAod2VsbEVuY1RhcFkgKyB5MlRhcENvb3JkKQoJCQkJKSkKCQkJKSAKCQkJd2hlbihpZExheWVyIAoJCQkgICAgZm9yZWFjaChsYXllckluZm8gaWRMYXllcnNUYWJsZSAKCQkJCShsYXllck5hbWUgPSBjYXIobGF5ZXJJbmZvKSkgCgkJCQkobGF5ZXJFbmNzID0gY2FkcihsYXllckluZm8pKSAKCQkJCShpZEVuY1hMID0gbnRoKDAgbGF5ZXJFbmNzKSkKCQkJCShpZEVuY1hSID0gbnRoKDEgbGF5ZXJFbmNzKSkgCgkJCQkoaWRFbmNZID0gbnRoKDIgbGF5ZXJFbmNzKSkgCgkJCQl3aGVuKGlzU2luZ2xlU3RyYXBwZWQgCgkJCQkgICAgKHgxSWRDb29yZCA9ICgtICgoc2EgLSBtYXgoeDFEaWZmQ29vcmQgeDFUYXBDb29yZCkpICsgCgkJCQkJCW1heCgoaWRFbmNYTCArIHgxRGlmZkNvb3JkKSAKCQkJCQkJICAgIChpZEVuY1hMICsgeDFUYXBDb29yZCkKCQkJCQkJKSkpKQoJCQkJKSAKCQkJCXVubGVzcyhpc1NpbmdsZVN0cmFwcGVkIAoJCQkJICAgIHdoZW4oKCgoc2EgPiAxZS0wNikgJiYgKG9mZnNldCA+IDFlLTA2KSAmJiAoc2EgPiAob2Zmc2V0ICsgY29udGFjdEZMZW5ndGgpKSkgfHwgKChzYSA+IDFlLTA2KSAmJiAob2Zmc2V0ID09IDAuMCkgJiYgKHNhID49IChvZmZzZXQgKyBjb250YWN0Rkxlbmd0aCkpKSkgCgkJCQkJKHgxSWRDb29yZCA9ICgtICgoc2EgLSBtYXgoeDFEaWZmQ29vcmQgeDFUYXBDb29yZCkpICsgCgkJCQkJCSAgICBtYXgoKGlkRW5jWEwgKyB4MURpZmZDb29yZCkgCgkJCQkJCQkoaWRFbmNYTCArIHgxVGFwQ29vcmQpCgkJCQkJCSAgICApKSkpCgkJCQkgICAgKSAKCQkJCSAgICB3aGVuKCgoKG9mZnNldCA+IDFlLTA2KSAmJiAoc2EgPT0gMC4wKSAmJiAoKG9mZnNldCArIGNvbnRhY3RGTGVuZ3RoKSA+PSBzYSkpIHx8ICgob2Zmc2V0ID4gMWUtMDYpICYmIChzYSA+IDFlLTA2KSAmJiAoKG9mZnNldCArIGNvbnRhY3RGTGVuZ3RoKSA+PSBzYSkpKSAKCQkJCQkoeDFJZENvb3JkID0gKC0gKG9mZnNldCArIG1heCgoaWRFbmNYTCArIHgxRGlmZkNvb3JkKSAKCQkJCQkJCShpZEVuY1hMICsgeDFUYXBDb29yZCkKCQkJCQkJICAgICkpKSkKCQkJCSAgICApCgkJCQkpIAoJCQkJKHkxSWRDb29yZCA9ICgtIG1heCgoaWRFbmNZICsgeTFEaWZmQ29vcmQpIAoJCQkJCSAgICAoaWRFbmNZICsgeTFUYXBDb29yZCkKCQkJCQkpKSkKCQkJCSh5MklkQ29vcmQgPSBtYXgoKGlkRW5jWSArIHkyRGlmZkNvb3JkKSAKCQkJCQkoaWRFbmNZICsgeTJUYXBDb29yZCkKCQkJCSAgICApKSAKCQkJCShsYXllckNvb3JkcyA9IGxpc3QoKHgxSWRDb29yZDp5MUlkQ29vcmQpIAoJCQkJCSh4MklkQ29vcmQ6eTJJZENvb3JkKQoJCQkJICAgICkpIAoJCQkJKGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdID0gbGF5ZXJDb29yZHMpCgkJCSAgICApCgkJCSkgCgkJCXdoZW4oc2VjSWRMYXllciAKCQkJICAgIGZvcmVhY2goc2VjTGF5ZXJJbmZvIHNlY0lkTGF5ZXJzVGFibGUgCgkJCQkoc2VjTGF5ZXJOYW1lID0gY2FyKHNlY0xheWVySW5mbykpIAoJCQkJKHNlY0xheWVyRW5jcyA9IGNhZHIoc2VjTGF5ZXJJbmZvKSkgCgkJCQkoc2VjSWRFbmNYTCA9IG50aCgwIHNlY0xheWVyRW5jcykpCgkJCQkoc2VjSWRFbmNYUiA9IG50aCgxIHNlY0xheWVyRW5jcykpIAoJCQkJKHNlY0lkRW5jWSA9IG50aCgyIHNlY0xheWVyRW5jcykpIAoJCQkJd2hlbihpc1NpbmdsZVN0cmFwcGVkIAoJCQkJICAgICh4MVNlY0lkQ29vcmQgPSAoLSAoKHNhIC0gbWF4KHgxRGlmZkNvb3JkIHgxVGFwQ29vcmQpKSArIAoJCQkJCQltYXgoKHNlY0lkRW5jWEwgKyB4MURpZmZDb29yZCkgCgkJCQkJCSAgICAoc2VjSWRFbmNYTCArIHgxVGFwQ29vcmQpCgkJCQkJCSkpKSkKCQkJCSkgCgkJCQl1bmxlc3MoaXNTaW5nbGVTdHJhcHBlZCAKCQkJCSAgICB3aGVuKCgoKHNhID4gMWUtMDYpICYmIChvZmZzZXQgPiAxZS0wNikgJiYgKHNhID4gKG9mZnNldCArIGNvbnRhY3RGTGVuZ3RoKSkpIHx8ICgoc2EgPiAxZS0wNikgJiYgKG9mZnNldCA9PSAwLjApICYmIChzYSA+PSAob2Zmc2V0ICsgY29udGFjdEZMZW5ndGgpKSkpIAoJCQkJCSh4MVNlY0lkQ29vcmQgPSAoLSAoKHNhIC0gbWF4KHgxRGlmZkNvb3JkIHgxVGFwQ29vcmQpKSArIAoJCQkJCQkgICAgbWF4KChzZWNJZEVuY1hMICsgeDFEaWZmQ29vcmQpIAoJCQkJCQkJKHNlY0lkRW5jWEwgKyB4MVRhcENvb3JkKQoJCQkJCQkgICAgKSkpKQoJCQkJICAgICkgCgkJCQkgICAgd2hlbigoKChvZmZzZXQgPiAxZS0wNikgJiYgKHNhID09IDAuMCkgJiYgKChvZmZzZXQgKyBjb250YWN0Rkxlbmd0aCkgPj0gc2EpKSB8fCAoKG9mZnNldCA+IDFlLTA2KSAmJiAoc2EgPiAxZS0wNikgJiYgKChvZmZzZXQgKyBjb250YWN0Rkxlbmd0aCkgPj0gc2EpKSkgCgkJCQkJKHgxU2VjSWRDb29yZCA9ICgtIChvZmZzZXQgKyBtYXgoKHNlY0lkRW5jWEwgKyB4MURpZmZDb29yZCkgCgkJCQkJCQkoc2VjSWRFbmNYTCArIHgxVGFwQ29vcmQpCgkJCQkJCSAgICApKSkpCgkJCQkgICAgKQoJCQkJKSAKCQkJCSh5MVNlY0lkQ29vcmQgPSAoLSBtYXgoKHNlY0lkRW5jWSArIHkxRGlmZkNvb3JkKSAKCQkJCQkgICAgKHNlY0lkRW5jWSArIHkxVGFwQ29vcmQpCgkJCQkJKSkpCgkJCQkoeTJTZWNJZENvb3JkID0gbWF4KChzZWNJZEVuY1kgKyB5MkRpZmZDb29yZCkgCgkJCQkJKHNlY0lkRW5jWSArIHkyVGFwQ29vcmQpCgkJCQkgICAgKSkgCgkJCQkoc2VjTGF5ZXJDb29yZHMgPSBsaXN0KCh4MVNlY0lkQ29vcmQ6eTFTZWNJZENvb3JkKSAKCQkJCQkoeDJTZWNJZENvb3JkOnkyU2VjSWRDb29yZCkKCQkJCSAgICApKSAKCQkJCShzZWNJZExheWVyc0Nvb3JkVGFibGVbc2VjTGF5ZXJOYW1lXSA9IHNlY0xheWVyQ29vcmRzKQoJCQkgICAgKQoJCQkpCgkJICAgICkgCgkJICAgIHdoZW4oKG5vdCBtYW51YWxMT0QpIAoJCQl3aGVuKHdlbGxMYXllciAKCQkJICAgIHdoZW4oaXNTaW5nbGVTdHJhcHBlZCAKCQkJCSh4MVdlbGxDb29yZCA9ICgtIChleHRlbnNpb24gKyB3ZWxsRW5jVGFwWCkpKQoJCQkgICAgKSAKCQkJICAgIHVubGVzcyhpc1NpbmdsZVN0cmFwcGVkIAoJCQkJKHgxV2VsbENvb3JkID0gKC0gKGV4dGVuc2lvbiArIHdlbGxFbmNEaWZmWCkpKQoJCQkgICAgKSAKCQkJICAgICh5MVdlbGxDb29yZCA9ICgtIG1heCgod2VsbEVuY0RpZmZZICsgeTFEaWZmQ29vcmQpIAoJCQkJCSh3ZWxsRW5jVGFwWSArIHkxVGFwQ29vcmQpCgkJCQkgICAgKSkpIAoJCQkgICAgKHkyV2VsbENvb3JkID0gbWF4KCh3ZWxsRW5jRGlmZlkgKyB5MkRpZmZDb29yZCkgCgkJCQkgICAgKHdlbGxFbmNUYXBZICsgeTJUYXBDb29yZCkKCQkJCSkpCgkJCSkgCgkJCXdoZW4oaWRMYXllciAKCQkJICAgIGZvcmVhY2gobGF5ZXJJbmZvIGlkTGF5ZXJzVGFibGUgCgkJCQkobGF5ZXJOYW1lID0gY2FyKGxheWVySW5mbykpIAoJCQkJKGxheWVyRW5jcyA9IGNhZHIobGF5ZXJJbmZvKSkgCgkJCQkoaWRFbmNYTCA9IG50aCgwIGxheWVyRW5jcykpCgkJCQkoaWRFbmNYUiA9IG50aCgxIGxheWVyRW5jcykpIAoJCQkJKGlkRW5jWSA9IG50aCgyIGxheWVyRW5jcykpIAoJCQkJKHgxSWRDb29yZCA9ICgtIChleHRlbnNpb24gKyBpZEVuY1hMKSkpIAoJCQkJKHkxSWRDb29yZCA9ICgtIG1heCgoaWRFbmNZICsgeTFEaWZmQ29vcmQpIAoJCQkJCSAgICAoaWRFbmNZICsgeTFUYXBDb29yZCkKCQkJCQkpKSkgCgkJCQkoeTJJZENvb3JkID0gbWF4KChpZEVuY1kgKyB5MkRpZmZDb29yZCkgCgkJCQkJKGlkRW5jWSArIHkyVGFwQ29vcmQpCgkJCQkgICAgKSkKCQkJCShsYXllckNvb3JkcyA9IGxpc3QoKHgxSWRDb29yZDp5MUlkQ29vcmQpIAoJCQkJCSh4MklkQ29vcmQ6eTJJZENvb3JkKQoJCQkJICAgICkpIAoJCQkJKGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdID0gbGF5ZXJDb29yZHMpCgkJCSAgICApCgkJCSkgCgkJCXdoZW4oc2VjSWRMYXllciAKCQkJICAgIGZvcmVhY2goc2VjTGF5ZXJJbmZvIHNlY0lkTGF5ZXJzVGFibGUgCgkJCQkoc2VjTGF5ZXJOYW1lID0gY2FyKHNlY0xheWVySW5mbykpIAoJCQkJKHNlY0xheWVyRW5jcyA9IGNhZHIoc2VjTGF5ZXJJbmZvKSkgCgkJCQkoc2VjSWRFbmNYTCA9IG50aCgwIHNlY0xheWVyRW5jcykpCgkJCQkoc2VjSWRFbmNYUiA9IG50aCgxIHNlY0xheWVyRW5jcykpIAoJCQkJKHNlY0lkRW5jWSA9IG50aCgyIHNlY0xheWVyRW5jcykpIAoJCQkJKHgxU2VjSWRDb29yZCA9ICgtIChleHRlbnNpb24gKyBzZWNJZEVuY1hMKSkpIAoJCQkJKHkxU2VjSWRDb29yZCA9ICgtIG1heCgoc2VjSWRFbmNZICsgeTFEaWZmQ29vcmQpIAoJCQkJCSAgICAoc2VjSWRFbmNZICsgeTFUYXBDb29yZCkKCQkJCQkpKSkgCgkJCQkoeTJTZWNJZENvb3JkID0gbWF4KChzZWNJZEVuY1kgKyB5MkRpZmZDb29yZCkgCgkJCQkJKHNlY0lkRW5jWSArIHkyVGFwQ29vcmQpCgkJCQkgICAgKSkKCQkJCShzZWNMYXllckNvb3JkcyA9IGxpc3QoKHgxU2VjSWRDb29yZDp5MVNlY0lkQ29vcmQpIAoJCQkJCSh4MlNlY0lkQ29vcmQ6eTJTZWNJZENvb3JkKQoJCQkJICAgICkpIAoJCQkJKHNlY0lkTGF5ZXJzQ29vcmRUYWJsZVtzZWNMYXllck5hbWVdID0gc2VjTGF5ZXJDb29yZHMpCgkJCSAgICApCgkJCSkKCQkgICAgKQoJCSkKCSAgICApIAoJICAgIHdoZW4oKGRpZmZJbXBsYW50ICYmIGltcGxhbnQpIAoJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmSW1wbGFudCAKCQkgICAgbGlzdChsaXN0KCh4MUNvb3JkIC0gZGlmZkV4dCkgCgkJCSAgICAoeTFDb29yZCAtIGRpZmZJbXBFbmMpCgkJCSkgCgkJCWxpc3QoeDFDb29yZCAKCQkJICAgICh3ICsgZGlmZkltcEVuYykKCQkJKQoJCSAgICApCgkJKQoJICAgICkgCgkgICAgd2hlbigoZGlmZkNvcmVJbXBsYW50ICYmIGltcGxhbnQpIAoJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmQ29yZUltcGxhbnQgCgkJICAgIGxpc3QobGlzdCgoeDFDb29yZCAtIGRpZmZFeHQpIAoJCQkgICAgKHkxQ29vcmQgLSBkaWZmQ29yZUltcEVuYykKCQkJKSAKCQkJbGlzdCh4MUNvb3JkIAoJCQkgICAgKHcgKyBkaWZmQ29yZUltcEVuYykKCQkJKQoJCSAgICApCgkJKQoJICAgICkgCgkgICAgKGRiQ2xvc2UgY29udGFjdElkKQoJKSAKCShkYmlkID0gKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZMYXllciAKCQlsaXN0KCgoeDFDb29yZCAtIGRpZmZFeHQpOnkxQ29vcmQpIAoJCSAgICAoeDFDb29yZDp3KQoJCSkKCSAgICApKQoJKHBpbmlkID0gKGRiQ3JlYXRlUGluIGNOZXQgZGJpZCkpIAoJc2V0U0dxKHBpbmlkIAoJICAgIGxpc3QoInRvcCIgImJvdHRvbSIgImxlZnQiKSBhY2Nlc3NEaXIKCSkgCgl3aGVuKHNlY0lkTGF5ZXIgCgkgICAgZm9yZWFjaChzZWNMYXllckluZm8gc2VjSWRMYXllcnNUYWJsZSAKCQkoc2VjTGF5ZXJOYW1lID0gY2FyKHNlY0xheWVySW5mbykpIAoJCShzZWNMYXllckNvb3JkcyA9IHNlY0lkTGF5ZXJzQ29vcmRUYWJsZVtzZWNMYXllck5hbWVdKSAKCQkoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgc2VjTGF5ZXJOYW1lIHNlY0xheWVyQ29vcmRzKQoJICAgICkKCSkgCgl3aGVuKChmaXJzdENvbnRhY3QgPT0gIiIpIAoJICAgIHdoZW4oKGRpZmZJbXBsYW50ICYmIGltcGxhbnQpIAoJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmSW1wbGFudCAKCQkgICAgbGlzdChsaXN0KCh4MUNvb3JkIC0gZGlmZkV4dCAtIGRpZmZJbXBFbmMpIAoJCQkgICAgKHkxQ29vcmQgLSBkaWZmSW1wRW5jKQoJCQkpIAoJCQlsaXN0KHgxQ29vcmQgCgkJCSAgICAodyArIGRpZmZJbXBFbmMpCgkJCSkKCQkgICAgKQoJCSkKCSAgICApIAoJICAgIHdoZW4oKGRpZmZDb3JlSW1wbGFudCAmJiBpbXBsYW50KSAKCQkoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkNvcmVJbXBsYW50IAoJCSAgICBsaXN0KGxpc3QoKHgxQ29vcmQgLSBkaWZmRXh0IC0gZGlmZkNvcmVJbXBFbmMpIAoJCQkgICAgKHkxQ29vcmQgLSBkaWZmQ29yZUltcEVuYykKCQkJKSAKCQkJbGlzdCh4MUNvb3JkIAoJCQkgICAgKHcgKyBkaWZmQ29yZUltcEVuYykKCQkJKQoJCSAgICApCgkJKQoJICAgICkgCgkgICAgd2hlbigobG9kRW5hYmxlZCAmJiAobm90IG1hbnVhbExPRCkgJiYgCgkJICAgIChidXR0aW5nR2F0ZXNTQSA+PSAxKSkgCgkJd2hlbigobW9kKGJ1dHRpbmdHYXRlc1NBIDIpID09IDApIAoJCSAgICAoZXh0ZW5zaW9uID0gKGNvbnRhY3RGTGVuZ3RoICsgKChidXR0aW5nR2F0ZXNTQSAvIDIpICogY3VyVGVybVNoQ29uTGVuZ3RoKSArIChidXR0aW5nR2F0ZXNTQSAqIGN1clRlcm1PZmZzZXQpICsgKChidXR0aW5nR2F0ZXNTQSAvIDIpICogbmV4dFRlcm1TaENvbkxlbmd0aCkgKyAoYnV0dGluZ0dhdGVzU0EgKiBuZXh0VGVybU9mZnNldCkgKyAoYnV0dGluZ0dhdGVzU0EgKiBsKSkpCgkJKSAKCQl1bmxlc3MoKG1vZChidXR0aW5nR2F0ZXNTQSAyKSA9PSAwKSAKCQkgICAgKGV4dGVuc2lvbiA9IChjb250YWN0Rkxlbmd0aCArICgoKGJ1dHRpbmdHYXRlc1NBICsgMSkgLyAyKSAqIGN1clRlcm1TaENvbkxlbmd0aCkgKyAoKGJ1dHRpbmdHYXRlc1NBICsgMSkgKiBjdXJUZXJtT2Zmc2V0KSArICgoKGJ1dHRpbmdHYXRlc1NBIC0gMSkgLyAyKSAqIG5leHRUZXJtU2hDb25MZW5ndGgpICsgKChidXR0aW5nR2F0ZXNTQSAtIDEpICogbmV4dFRlcm1PZmZzZXQpICsgKGJ1dHRpbmdHYXRlc1NBICogbCkpKQoJCSkgCgkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZMYXllciAKCQkgICAgbGlzdCgoKC0gZXh0ZW5zaW9uKTp5MUNvb3JkKSAKCQkJKCh4MUNvb3JkIC0gZGlmZkV4dCk6dykKCQkgICAgKQoJCSkgCgkJd2hlbigoZGlmZkltcGxhbnQgJiYgaW1wbGFudCkgCgkJICAgIChkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmSW1wbGFudCAKCQkJbGlzdChsaXN0KCgtIChleHRlbnNpb24gKyBkaWZmSW1wRW5jKSkgCgkJCQkoeTFDb29yZCAtIGRpZmZJbXBFbmMpCgkJCSAgICApIAoJCQkgICAgbGlzdCgoeDFDb29yZCAtIGRpZmZFeHQpIAoJCQkJKHcgKyBkaWZmSW1wRW5jKQoJCQkgICAgKQoJCQkpCgkJICAgICkKCQkpCgkJd2hlbigoZGlmZkNvcmVJbXBsYW50ICYmIGltcGxhbnQpIAoJCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkNvcmVJbXBsYW50IAoJCQlsaXN0KGxpc3QoKC0gKGV4dGVuc2lvbiArIGRpZmZDb3JlSW1wRW5jKSkgCgkJCQkoeTFDb29yZCAtIGRpZmZDb3JlSW1wRW5jKQoJCQkgICAgKSAKCQkJICAgIGxpc3QoKHgxQ29vcmQgLSBkaWZmRXh0KSAKCQkJCSh3ICsgZGlmZkNvcmVJbXBFbmMpCgkJCSAgICApCgkJCSkKCQkgICAgKQoJCSkKCSAgICApIAoJICAgIHdoZW4oKGxvZEVuYWJsZWQgJiYgbWFudWFsTE9EICYmIChzYSA+IGRpZmZFeHQpKSAKCQkoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkxheWVyIAoJCSAgICBsaXN0KCgoLSBzYSk6eTFDb29yZCkgCgkJCSgoeDFDb29yZCAtIGRpZmZFeHQpOncpCgkJICAgICkKCQkpIAoJCXdoZW4oKGRpZmZJbXBsYW50ICYmIGltcGxhbnQpIAoJCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkltcGxhbnQgCgkJCWxpc3QobGlzdCgoLSAoc2EgKyBkaWZmSW1wRW5jKSkgCgkJCQkoeTFDb29yZCAtIGRpZmZJbXBFbmMpCgkJCSAgICApIAoJCQkgICAgbGlzdCgoeDFDb29yZCAtIGRpZmZFeHQpIAoJCQkJKHcgKyBkaWZmSW1wRW5jKQoJCQkgICAgKQoJCQkpCgkJICAgICkKCQkpIAoJCXdoZW4oKGRpZmZDb3JlSW1wbGFudCAmJiBpbXBsYW50KSAKCQkgICAgKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZDb3JlSW1wbGFudCAKCQkJbGlzdChsaXN0KCgtIChzYSArIGRpZmZDb3JlSW1wRW5jKSkgCgkJCQkoeTFDb29yZCAtIGRpZmZDb3JlSW1wRW5jKQoJCQkgICAgKSAKCQkJICAgIGxpc3QoKHgxQ29vcmQgLSBkaWZmRXh0KSAKCQkJCSh3ICsgZGlmZkNvcmVJbXBFbmMpCgkJCSAgICApCgkJCSkKCQkgICAgKQoJCSkKCSAgICApCgkgICAgd2hlbihsYWJlbExheWVyIAoJCShkYkNyZWF0ZUxhYmVsIHRjQ2VsbFZpZXcgbGFiZWxMYXllciAKCQkgICAgbGlzdCgoLSAoeDFDb29yZCArIChkaWZmRXh0IC8gMi4wKSkpIAoJCQkoeTFDb29yZCArICh3IC8gMi4wKSkKCQkgICAgKSBuZXRMCgkJICAgICJjZW50ZXJDZW50ZXIiICJSMCIgInJvbWFuIiBsYWJlbFdpZHRoCgkJKQoJICAgICkgCgkgICAgd2hlbih3ZWxsTGF5ZXIgCgkJKHgxV2VsbENvb3JkID0gKC0gKHgxQ29vcmQgKyBkaWZmRXh0ICsgd2VsbEVuY0RpZmZYKSkpIAoJCXdoZW4oKGxvZEVuYWJsZWQgJiYgKG5vdCBtYW51YWxMT0QpICYmIAoJCQkoYnV0dGluZ0dhdGVzU0EgPj0gMSkpIAoJCSAgICAoeDFXZWxsQ29vcmQgPSAoLSAoeDFDb29yZCArIGV4dGVuc2lvbiArIHdlbGxFbmNEaWZmWCkpKQoJCSkgCgkJd2hlbigobG9kRW5hYmxlZCAmJiBtYW51YWxMT0QgJiYgKHNhID4gZGlmZkV4dCkpIAoJCSAgICAoeDFXZWxsQ29vcmQgPSAoLSAoeDFDb29yZCArIHNhICsgd2VsbEVuY0RpZmZYKSkpCgkJKSAKCQkoeTFXZWxsQ29vcmQgPSAoLSAoeTFDb29yZCArIHdlbGxFbmNEaWZmWSkpKQoJCSh5MldlbGxDb29yZCA9ICh5MUNvb3JkICsgdyArIHdlbGxFbmNEaWZmWSkpCgkgICAgKSAKCSAgICB3aGVuKGlkTGF5ZXIgCgkJZm9yZWFjaChsYXllckluZm8gaWRMYXllcnNUYWJsZSAKCQkgICAgKGxheWVyTmFtZSA9IGNhcihsYXllckluZm8pKSAKCQkgICAgKGxheWVyRW5jcyA9IGNhZHIobGF5ZXJJbmZvKSkgCgkJICAgIChpZEVuY1hMID0gbnRoKDAgbGF5ZXJFbmNzKSkKCQkgICAgKGlkRW5jWFIgPSBudGgoMSBsYXllckVuY3MpKSAKCQkgICAgKGlkRW5jWSA9IG50aCgyIGxheWVyRW5jcykpIAoJCSAgICAoeDFJZENvb3JkID0gbnRoKDAgCgkJCSAgICBjYXIoaWRMYXllcnNDb29yZFRhYmxlW2xheWVyTmFtZV0pCgkJCSkpIAoJCSAgICAoeTFJZENvb3JkID0gbnRoKDEgCgkJCSAgICBjYXIoaWRMYXllcnNDb29yZFRhYmxlW2xheWVyTmFtZV0pCgkJCSkpIAoJCSAgICAoeDJJZENvb3JkID0gbnRoKDAgCgkJCSAgICBjYWRyKGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdKQoJCQkpKQoJCSAgICAoeTJJZENvb3JkID0gbnRoKDEgCgkJCSAgICBjYWRyKGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdKQoJCQkpKSAKCQkgICAgKHgxSWRDb29yZCA9ICgtICh4MUNvb3JkICsgZGlmZkV4dCArIGlkRW5jWEwpKSkgCgkJICAgIHdoZW4oKGxvZEVuYWJsZWQgJiYgKG5vdCBtYW51YWxMT0QpICYmIAoJCQkgICAgKGJ1dHRpbmdHYXRlc1NBID49IDEpKSAKCQkJKHgxSWRDb29yZCA9ICgtICh4MUNvb3JkICsgZXh0ZW5zaW9uICsgaWRFbmNYTCkpKQoJCSAgICApIAoJCSAgICB3aGVuKChsb2RFbmFibGVkICYmIG1hbnVhbExPRCAmJiAoc2EgPiBkaWZmRXh0KSkgCgkJCSh4MUlkQ29vcmQgPSAoLSAoeDFDb29yZCArIHNhICsgaWRFbmNYTCkpKQoJCSAgICApIAoJCSAgICAoeTFJZENvb3JkID0gKC0gKHkxQ29vcmQgKyBpZEVuY1kpKSkKCQkgICAgKHkySWRDb29yZCA9ICh5MUNvb3JkICsgdyArIGlkRW5jWSkpIAoJCSAgICAobGF5ZXJDb29yZHMgPSBsaXN0KCh4MUlkQ29vcmQ6eTFJZENvb3JkKSAKCQkJICAgICh4MklkQ29vcmQ6eTJJZENvb3JkKQoJCQkpKSAKCQkgICAgKGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdID0gbGF5ZXJDb29yZHMpCgkJKQoJICAgICkgCgkgICAgd2hlbihzZWNJZExheWVyIAoJCWZvcmVhY2goc2VjTGF5ZXJJbmZvIHNlY0lkTGF5ZXJzVGFibGUgCgkJICAgIChzZWNMYXllck5hbWUgPSBjYXIoc2VjTGF5ZXJJbmZvKSkgCgkJICAgIChzZWNMYXllckVuY3MgPSBjYWRyKHNlY0xheWVySW5mbykpIAoJCSAgICAoc2VjSWRFbmNYTCA9IG50aCgwIHNlY0xheWVyRW5jcykpCgkJICAgIChzZWNJZEVuY1hSID0gbnRoKDEgc2VjTGF5ZXJFbmNzKSkgCgkJICAgIChzZWNJZEVuY1kgPSBudGgoMiBzZWNMYXllckVuY3MpKSAKCQkgICAgKHgxU2VjSWRDb29yZCA9IG50aCgwIAoJCQkgICAgY2FyKHNlY0lkTGF5ZXJzQ29vcmRUYWJsZVtzZWNMYXllck5hbWVdKQoJCQkpKSAKCQkgICAgKHkxU2VjSWRDb29yZCA9IG50aCgxIAoJCQkgICAgY2FyKHNlY0lkTGF5ZXJzQ29vcmRUYWJsZVtzZWNMYXllck5hbWVdKQoJCQkpKSAKCQkgICAgKHgyU2VjSWRDb29yZCA9IG50aCgwIAoJCQkgICAgY2FkcihzZWNJZExheWVyc0Nvb3JkVGFibGVbc2VjTGF5ZXJOYW1lXSkKCQkJKSkKCQkgICAgKHkyU2VjSWRDb29yZCA9IG50aCgxIAoJCQkgICAgY2FkcihzZWNJZExheWVyc0Nvb3JkVGFibGVbc2VjTGF5ZXJOYW1lXSkKCQkJKSkgCgkJICAgICh4MVNlY0lkQ29vcmQgPSAoLSAoeDFDb29yZCArIGRpZmZFeHQgKyBzZWNJZEVuY1hMKSkpIAoJCSAgICB3aGVuKChsb2RFbmFibGVkICYmIChub3QgbWFudWFsTE9EKSAmJiAKCQkJICAgIChidXR0aW5nR2F0ZXNTQSA+PSAxKSkgCgkJCSh4MVNlY0lkQ29vcmQgPSAoLSAoeDFDb29yZCArIGV4dGVuc2lvbiArIHNlY0lkRW5jWEwpKSkKCQkgICAgKSAKCQkgICAgd2hlbigobG9kRW5hYmxlZCAmJiBtYW51YWxMT0QgJiYgKHNhID4gZGlmZkV4dCkpIAoJCQkoeDFTZWNJZENvb3JkID0gKC0gKHgxQ29vcmQgKyBzYSArIHNlY0lkRW5jWEwpKSkKCQkgICAgKSAKCQkgICAgKHkxU2VjSWRDb29yZCA9ICgtICh5MUNvb3JkICsgc2VjSWRFbmNZKSkpCgkJICAgICh5MlNlY0lkQ29vcmQgPSAoeTFDb29yZCArIHcgKyBzZWNJZEVuY1kpKSAKCQkgICAgKHNlY0xheWVyQ29vcmRzID0gbGlzdCgoeDFTZWNJZENvb3JkOnkxU2VjSWRDb29yZCkgCgkJCSAgICAoeDJTZWNJZENvb3JkOnkyU2VjSWRDb29yZCkKCQkJKSkgCgkJICAgIChzZWNJZExheWVyc0Nvb3JkVGFibGVbc2VjTGF5ZXJOYW1lXSA9IHNlY0xheWVyQ29vcmRzKQoJCSkgCgkJZm9yZWFjaChzZWNMYXllckluZm8gc2VjSWRMYXllcnNUYWJsZSAKCQkgICAgKHNlY0xheWVyTmFtZSA9IGNhcihzZWNMYXllckluZm8pKSAKCQkgICAgKHNlY0xheWVyQ29vcmRzID0gc2VjSWRMYXllcnNDb29yZFRhYmxlW3NlY0xheWVyTmFtZV0pIAoJCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgc2VjTGF5ZXJOYW1lIHNlY0xheWVyQ29vcmRzKQoJCSkKCSAgICApCgkpIAoJd2hlbigobSA+IDEpIAoJICAgIHdoZW4oKHNoYXJlZFNvdXJjZSAhPSAiIikgCgkJKHNoYXJlZFNyY0lkID0gKGRiT3BlbkNlbGxWaWV3IAoJCQkodGNDZWxsVmlld34+bGliKSBzaGFyZWRTb3VyY2UgInN5bWJvbGljIiBuaWwKCQkJInJuIgoJCSAgICApKSAKCQl1bmxlc3MoKHNoYXJlZFNvdXJjZSAhPSAiIikgCgkJICAgIGVycm9yKHNwcmludGYobmlsICJDYW5ub3QgZmluZC9vcGVuIHNoYXJlZCBzb3VyY2UgY29udGFjdCBjZWxsIGAlcyciIHNoYXJlZFNvdXJjZSkpCgkJKSAKCQl1bmxlc3MoKHNoYXJlZFNyY0lkfj5pc1BhcmFtQ2VsbCkgCgkJICAgIGVycm9yKHNwcmludGYobmlsICJOYW1lZCBjZWxsIGlzIG5vdCBhIHBjZWxsIGAlcyciIHNoYXJlZFNvdXJjZSkpCgkJKQoJICAgICkgCgkgICAgd2hlbigoc2hhcmVkRHJhaW4gIT0gIiIpIAoJCShzaGFyZWREcm5JZCA9IChkYk9wZW5DZWxsVmlldyAKCQkJKHRjQ2VsbFZpZXd+PmxpYikgc2hhcmVkRHJhaW4gInN5bWJvbGljIiBuaWwKCQkJInJuIgoJCSAgICApKSAKCQl1bmxlc3Moc2hhcmVkRHJuSWQgCgkJICAgIGVycm9yKHNwcmludGYobmlsICJDYW5ub3QgZmluZC9vcGVuIHNoYXJlZCBkcmFpbiBjb250YWN0IGNlbGwgYCVzJyIgc2hhcmVkRHJhaW4pKQoJCSkgCgkJdW5sZXNzKChzaGFyZWREcm5JZH4+aXNQYXJhbUNlbGwpIAoJCSAgICBlcnJvcihzcHJpbnRmKG5pbCAiTmFtZWQgY2VsbCBpcyBub3QgYSBwY2VsbCBgJXMnIiBzaGFyZWREcmFpbikpCgkJKQoJICAgICkKCSkKCShjTmV0ID0gaWYoKGNOZXQgPT0gc05ldCkgZE5ldCBzTmV0KSkgCgkobmV0TCA9IGlmKChuZXRMID09ICJTIikgIkQiICJTIikpIAoJZm9yKG4gMSBtIAoJICAgIChkYmlkID0gKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGdhdGVMYXllciAKCQkgICAgbGlzdCgoeDFDb29yZDooeTFDb29yZCAtIGdhdGVFeHQpKSAKCQkJKCh4MUNvb3JkICsgbCk6KHkxQ29vcmQgKyB3ICsgZ2F0ZUV4dCkpCgkJICAgICkKCQkpKSAKCSAgICAoZGJBZGRGaWdUb05ldCBkYmlkIGdOZXQpCgkgICAgKGRiaWQgPSAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZ2F0ZUxheWVyIAoJCSAgICBsaXN0KCh4MUNvb3JkOih5MUNvb3JkICsgdykpIAoJCQkoKHgxQ29vcmQgKyBsKTooeTFDb29yZCArIHcgKyBnYXRlRXh0KSkKCQkgICAgKQoJCSkpIAoJICAgIChwaW5pZCA9IChkYkNyZWF0ZVBpbiBnTmV0IGRiaWQpKSAKCSAgICBzZXRTR3EocGluaWQgCgkJbGlzdCgidG9wIikgYWNjZXNzRGlyCgkgICAgKSAKCSAgICAoZGJpZCA9IChkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBnYXRlTGF5ZXIgCgkJICAgIGxpc3QoKHgxQ29vcmQ6KHkxQ29vcmQgLSBnYXRlRXh0KSkgCgkJCSgoeDFDb29yZCArIGwpOnkxQ29vcmQpCgkJICAgICkKCQkpKSAKCSAgICAocGluaWQgPSAoZGJDcmVhdGVQaW4gZ05ldCBkYmlkKSkKCSAgICBzZXRTR3EocGluaWQgCgkJbGlzdCgiYm90dG9tIikgYWNjZXNzRGlyCgkgICAgKSAKCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkxheWVyIAoJCWxpc3QoKHgxQ29vcmQ6eTFDb29yZCkgCgkJICAgICgoeDFDb29yZCArIGwpOih5MUNvb3JkICsgdykpCgkJKQoJICAgICkgCgkgICAgd2hlbigoZGlmZkltcGxhbnQgJiYgaW1wbGFudCkgCgkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZJbXBsYW50IAoJCSAgICBsaXN0KGxpc3QoeDFDb29yZCAKCQkJICAgICh5MUNvb3JkIC0gZGlmZkltcEVuYykKCQkJKSAKCQkJbGlzdCgoeDFDb29yZCArIGwpIAoJCQkgICAgKHkxQ29vcmQgKyB3ICsgZGlmZkltcEVuYykKCQkJKQoJCSAgICApCgkJKQoJICAgICkgCgkgICAgd2hlbigoZGlmZkNvcmVJbXBsYW50ICYmIGltcGxhbnQpIAoJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmQ29yZUltcGxhbnQgCgkJICAgIGxpc3QobGlzdCh4MUNvb3JkIAoJCQkgICAgKHkxQ29vcmQgLSBkaWZmQ29yZUltcEVuYykKCQkJKSAKCQkJbGlzdCgoeDFDb29yZCArIGwpIAoJCQkgICAgKHkxQ29vcmQgKyB3ICsgZGlmZkNvcmVJbXBFbmMpCgkJCSkKCQkgICAgKQoJCSkKCSAgICApIAoJICAgIHdoZW4oKHBvbHlJbXBsYW50ICYmIGltcGxhbnQgJiYgZ2F0ZUltcGxhbnQpIAoJCSh4MVBZaUNvb3JkID0gKHgxQ29vcmQgLSBwb2x5SW1wWEVuYykpIAoJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBwb2x5SW1wbGFudCAKCQkgICAgbGlzdCgoeDFQWWlDb29yZDp5MVBZaUNvb3JkKSAKCQkJKCh4MUNvb3JkICsgbCArIHBvbHlJbXBYRW5jKTp5MlBZaUNvb3JkKQoJCSAgICApCgkJKQoJICAgICkKCSAgICAoeDFDb29yZCA9ICh4MUNvb3JkICsgbCkpIAoJICAgIGlmKChjTmV0ID09IHNOZXQpIHRoZW4gCgkJKGN1cnJlbnRDb250YWN0ID0gc2hhcmVkU291cmNlKSAKCQkoY3VycmVudE5ldCA9IHNOZXQpIAoJCShvZmZzZXQgPSAobWluU3BhY2VPZmZTZXQgKyBzcmNPZmZzZXQpKQoJCShzZWNJZExheWVyID0gc3JjU2VjSWRMYXllcikgCgkJd2hlbihzZWNJZExheWVyIAoJCSAgICAoc2VjSWRMYXllcnNUYWJsZSA9IHNyY1NlY0lkTGF5ZXJzVGFibGUpCgkJKSBlbHNlIAoJCShjdXJyZW50Q29udGFjdCA9IHNoYXJlZERyYWluKSAKCQkoY3VycmVudE5ldCA9IGROZXQpCgkJKG9mZnNldCA9IChtaW5TcGFjZU9mZlNldCArIGRybk9mZnNldCkpIAoJCShzZWNJZExheWVyID0gZHJuU2VjSWRMYXllcikgCgkJd2hlbihzZWNJZExheWVyIAoJCSAgICAoc2VjSWRMYXllcnNUYWJsZSA9IGRyblNlY0lkTGF5ZXJzVGFibGUpCgkJKQoJICAgICkgCgkgICAgd2hlbigoKG4gIT0gbSkgJiYgKGN1cnJlbnRDb250YWN0ICE9ICIiKSkgCgkJaWYoKGNOZXQgPT0gc05ldCkgdGhlbiAKCQkgICAgKGNvbnRhY3RJZCA9IHNoYXJlZFNyY0lkKSAKCQkgICAgKG9mZnNldCA9IChtaW5TcGFjZU9mZlNldCArIHNyY09mZnNldCkpIGVsc2UKCQkgICAgKGNvbnRhY3RJZCA9IHNoYXJlZERybklkKSAKCQkgICAgKG9mZnNldCA9IChtaW5TcGFjZU9mZlNldCArIGRybk9mZnNldCkpCgkJKSAKCQkocGFyYW1zID0gKGNvbnRhY3RJZH4+cGFyYW1ldGVycykpIAoJCShpbnN0UGFyYW1zID0gbGlzdChsaXN0KCJ3IiAiZmxvYXQiIHcpKSkgCgkJd2hlbigocGFyYW1zfj5pbXBsYW50KSAKCQkgICAgKGluc3RQYXJhbXMgPSB4Y29ucyhpbnN0UGFyYW1zIGNvbnRhY3RJbXBQYXJhbSkpCgkJKQoJCXdoZW4oKHBhcmFtc34+aW5XZWxsKSAKCQkgICAgKGluc3RQYXJhbXMgPSB4Y29ucyhpbnN0UGFyYW1zIGNvbnRhY3RXZWxsUGFyYW0pKQoJCSkgCgkJKGluc3QgPSAoZGJDcmVhdGVQYXJhbUluc3QgdGNDZWxsVmlldyBjb250YWN0SWQgCgkJCXNwcmludGYobmlsICJjJWQiIG4pIAoJCQkoKG9mZnNldCArIHgxQ29vcmQpOnkxQ29vcmQpCgkJCSJSMCIgMSBpbnN0UGFyYW1zCgkJICAgICkpIAoJCXVubGVzcyhpbnN0IAoJCSAgICBlcnJvcihzcHJpbnRmKG5pbCAiRmFpbGVkIHRvIGNyZWF0ZSBpbnN0YW5jZSBvZiBgJXMnIiAKCQkJICAgIChjb250YWN0SWR+PmNlbGxOYW1lKQoJCQkpCgkJICAgICkKCQkpIAoJCShtYXN0ZXIgPSAoaW5zdH4+bWFzdGVyKSkgCgkJdW5sZXNzKCgobWFzdGVyfj50b3BMYXllcikgJiYgKG1hc3Rlcn4+dG9wTGF5ZXJQaW5CYm94KSkgCgkJICAgIGVycm9yKHNwcmludGYobmlsICJNaXNzaW5nIHRvcExheWVyIGFuZC9vciB0b3BMYXllclBpbkJib3ggY2VsbCBwcm9wZXJ0aWVzIGluIGAlcyciIAoJCQkgICAgKGNvbnRhY3RJZH4+Y2VsbE5hbWUpCgkJCSkKCQkgICAgKQoJCSkKCQkoYkJveCA9IGxpc3QobGlzdCgoY2FhcigobWFzdGVyfj50b3BMYXllclBpbkJib3gpKSArIHgxQ29vcmQgKyBvZmZzZXQpIAoJCQkgICAgY2FkYXIoKG1hc3Rlcn4+dG9wTGF5ZXJQaW5CYm94KSkKCQkJKSAKCQkJbGlzdCgoY2FhZHIoKG1hc3Rlcn4+dG9wTGF5ZXJQaW5CYm94KSkgKyB4MUNvb3JkICsgb2Zmc2V0KSAKCQkJICAgIGNhZGFkcigobWFzdGVyfj50b3BMYXllclBpbkJib3gpKQoJCQkpCgkJICAgICkpIAoJCShkYmlkID0gKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IAoJCQkobWFzdGVyfj50b3BMYXllcikgYkJveAoJCSAgICApKSAKCQkocGluaWQgPSAoZGJDcmVhdGVQaW4gY05ldCBkYmlkKSkgCgkJc2V0U0dxKHBpbmlkIAoJCSAgICBsaXN0KCJ0b3AiICJib3R0b20iKSBhY2Nlc3NEaXIKCQkpIAoJCXdoZW4obGFiZWxMYXllciAKCQkgICAgKGRiQ3JlYXRlTGFiZWwgdGNDZWxsVmlldyBsYWJlbExheWVyIAoJCQlsaXN0KChjYWFyKGJCb3gpICsgKChjYWFkcihiQm94KSAtIGNhYXIoYkJveCkpIC8gMi4wKSkgCgkJCSAgICAoY2FkYXIoYkJveCkgKyAoKGNhZGFkcihiQm94KSAtIGNhZGFyKGJCb3gpKSAvIDIuMCkpCgkJCSkgbmV0TAoJCQkiY2VudGVyQ2VudGVyIiAiUjAiICJyb21hbiIgbGFiZWxXaWR0aAoJCSAgICApCgkJKQoJCXdoZW4oKG9mZnNldCA+IDFlLTA2KSAKCQkgICAgKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZMYXllciAKCQkJbGlzdCgoeDFDb29yZDp5MUNvb3JkKSAKCQkJICAgICgob2Zmc2V0ICsgeDFDb29yZCk6KHkxQ29vcmQgKyB3KSkKCQkJKQoJCSAgICApIAoJCSAgICB3aGVuKChkaWZmSW1wbGFudCAmJiBpbXBsYW50KSAKCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZJbXBsYW50IAoJCQkgICAgbGlzdChsaXN0KHgxQ29vcmQgCgkJCQkgICAgKHkxQ29vcmQgLSBkaWZmSW1wRW5jKQoJCQkJKSAKCQkJCWxpc3QoKG9mZnNldCArIHgxQ29vcmQpIAoJCQkJICAgICh5MUNvb3JkICsgdyArIGRpZmZJbXBFbmMpCgkJCQkpCgkJCSAgICApCgkJCSkKCQkgICAgKSAKCQkgICAgd2hlbigoZGlmZkNvcmVJbXBsYW50ICYmIGltcGxhbnQpIAoJCQkoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkNvcmVJbXBsYW50IAoJCQkgICAgbGlzdChsaXN0KHgxQ29vcmQgCgkJCQkgICAgKHkxQ29vcmQgLSBkaWZmQ29yZUltcEVuYykKCQkJCSkgCgkJCQlsaXN0KChvZmZzZXQgKyB4MUNvb3JkKSAKCQkJCSAgICAoeTFDb29yZCArIHcgKyBkaWZmQ29yZUltcEVuYykKCQkJCSkKCQkJICAgICkKCQkJKQoJCSAgICApCgkJKSAKCQl1bmxlc3MoKG1hc3Rlcn4+ZGlmZkxheWVyQmJveCkgCgkJICAgIGVycm9yKHNwcmludGYobmlsICJNaXNzaW5nIGRpZmZMYXllckJib3ggY2VsbCBwcm9wZXJ0aWVzIGluIGAlcyciIAoJCQkgICAgKGNvbnRhY3RJZH4+Y2VsbE5hbWUpCgkJCSkKCQkgICAgKQoJCSkgCgkJKHgxQ29vcmQgPSAoKDIuMCAqIG9mZnNldCkgKyAoeDFDb29yZCArIChjYWFkcigobWFzdGVyfj5kaWZmTGF5ZXJCYm94KSkgLSBjYWFyKChtYXN0ZXJ+PmRpZmZMYXllckJib3gpKSkpKSkgCgkJd2hlbigob2Zmc2V0ID4gMWUtMDYpIAoJCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkxheWVyIAoJCQlsaXN0KCgoeDFDb29yZCAtIG9mZnNldCk6eTFDb29yZCkgCgkJCSAgICAoeDFDb29yZDooeTFDb29yZCArIHcpKQoJCQkpCgkJICAgICkgCgkJICAgIHdoZW4oKGRpZmZJbXBsYW50ICYmIGltcGxhbnQpIAoJCQkoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkltcGxhbnQgCgkJCSAgICBsaXN0KGxpc3QoKHgxQ29vcmQgLSBvZmZzZXQpIAoJCQkJICAgICh5MUNvb3JkIC0gZGlmZkltcEVuYykKCQkJCSkgCgkJCQlsaXN0KHgxQ29vcmQgCgkJCQkgICAgKHkxQ29vcmQgKyB3ICsgZGlmZkltcEVuYykKCQkJCSkKCQkJICAgICkKCQkJKQoJCSAgICApIAoJCSAgICB3aGVuKChkaWZmQ29yZUltcGxhbnQgJiYgaW1wbGFudCkgCgkJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmQ29yZUltcGxhbnQgCgkJCSAgICBsaXN0KGxpc3QoKHgxQ29vcmQgLSBvZmZzZXQpIAoJCQkJICAgICh5MUNvb3JkIC0gZGlmZkNvcmVJbXBFbmMpCgkJCQkpIAoJCQkJbGlzdCh4MUNvb3JkIAoJCQkJICAgICh5MUNvb3JkICsgdyArIGRpZmZDb3JlSW1wRW5jKQoJCQkJKQoJCQkgICAgKQoJCQkpCgkJICAgICkKCQkpIAoJCSh4MURpZmZDb29yZCA9IGNhYXIoKG1hc3Rlcn4+ZGlmZkxheWVyQmJveCkpKQoJCSh4MVRhcENvb3JkID0gaWYoKG1hc3Rlcn4+dGFwTGF5ZXJCYm94KSAKCQkJYWJzKGNhYXIoKG1hc3Rlcn4+dGFwTGF5ZXJCYm94KSkpIDAuMAoJCSAgICApKSAKCQkoeTFEaWZmQ29vcmQgPSBjYWRhcigobWFzdGVyfj5kaWZmTGF5ZXJCYm94KSkpIAoJCSh5MVRhcENvb3JkID0gaWYoKG1hc3Rlcn4+dGFwTGF5ZXJCYm94KSAKCQkJYWJzKGNhZGFyKChtYXN0ZXJ+PnRhcExheWVyQmJveCkpKSAwLjAKCQkgICAgKSkgCgkJKHkyRGlmZkNvb3JkID0gY2FkYWRyKChtYXN0ZXJ+PmRpZmZMYXllckJib3gpKSkgCgkJKHkyVGFwQ29vcmQgPSBpZigobWFzdGVyfj50YXBMYXllckJib3gpIAoJCQlhYnMoY2FkYWRyKChtYXN0ZXJ+PnRhcExheWVyQmJveCkpKSAwLjAKCQkgICAgKSkKCQkoeDJEaWZmQ29vcmQgPSBjYWFkcigobWFzdGVyfj5kaWZmTGF5ZXJCYm94KSkpIAoJCSh4MlRhcENvb3JkID0gaWYoKG1hc3Rlcn4+dGFwTGF5ZXJCYm94KSAKCQkJYWJzKGNhYWRyKChtYXN0ZXJ+PnRhcExheWVyQmJveCkpKSAwLjAKCQkgICAgKSkgCgkJd2hlbih3ZWxsTGF5ZXIgCgkJICAgICh5MVdlbGxDb29yZCA9IG1pbigoLSBtYXgoKHdlbGxFbmNEaWZmWSArIHkxRGlmZkNvb3JkKSAKCQkJCSAgICAod2VsbEVuY1RhcFkgKyB5MVRhcENvb3JkKQoJCQkJKSkgeTFXZWxsQ29vcmQKCQkJKSkgCgkJICAgICh5MldlbGxDb29yZCA9IG1heCgod2VsbEVuY0RpZmZZICsgeTJEaWZmQ29vcmQpIAoJCQkgICAgKHdlbGxFbmNUYXBZICsgeTJUYXBDb29yZCkgeTJXZWxsQ29vcmQKCQkJKSkKCQkpIAoJCXdoZW4oaWRMYXllciAKCQkgICAgZm9yZWFjaChsYXllckluZm8gaWRMYXllcnNUYWJsZSAKCQkJKGxheWVyTmFtZSA9IGNhcihsYXllckluZm8pKSAKCQkJKGxheWVyRW5jcyA9IGNhZHIobGF5ZXJJbmZvKSkgCgkJCShpZEVuY1hMID0gbnRoKDAgbGF5ZXJFbmNzKSkKCQkJKGlkRW5jWFIgPSBudGgoMSBsYXllckVuY3MpKSAKCQkJKGlkRW5jWSA9IG50aCgyIGxheWVyRW5jcykpIAoJCQkoeDFJZENvb3JkID0gbnRoKDAgCgkJCQljYXIoaWRMYXllcnNDb29yZFRhYmxlW2xheWVyTmFtZV0pCgkJCSAgICApKSAKCQkJKHkxSWRDb29yZCA9IG50aCgxIAoJCQkJY2FyKGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdKQoJCQkgICAgKSkgCgkJCSh4MklkQ29vcmQgPSBudGgoMCAKCQkJCWNhZHIoaWRMYXllcnNDb29yZFRhYmxlW2xheWVyTmFtZV0pCgkJCSAgICApKQoJCQkoeTJJZENvb3JkID0gbnRoKDEgCgkJCQljYWRyKGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdKQoJCQkgICAgKSkgCgkJCSh5MUlkQ29vcmQgPSBtaW4oKC0gbWF4KChpZEVuY1kgKyB5MURpZmZDb29yZCkgCgkJCQkJKGlkRW5jWSArIHkxVGFwQ29vcmQpCgkJCQkgICAgKSkgeTFJZENvb3JkCgkJCSAgICApKSAKCQkJKHkySWRDb29yZCA9IG1heCgoaWRFbmNZICsgeTJEaWZmQ29vcmQpIAoJCQkJKGlkRW5jWSArIHkyVGFwQ29vcmQpIHkySWRDb29yZAoJCQkgICAgKSkgCgkJCShsYXllckNvb3JkcyA9IGxpc3QoKHgxSWRDb29yZDp5MUlkQ29vcmQpIAoJCQkJKHgySWRDb29yZDp5MklkQ29vcmQpCgkJCSAgICApKSAKCQkJKGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdID0gbGF5ZXJDb29yZHMpCgkJICAgICkKCQkpIAoJCXdoZW4oc2VjSWRMYXllciAKCQkgICAgZm9yZWFjaChzZWNMYXllckluZm8gc2VjSWRMYXllcnNUYWJsZSAKCQkJKHNlY0xheWVyTmFtZSA9IGNhcihzZWNMYXllckluZm8pKSAKCQkJKHNlY0xheWVyRW5jcyA9IGNhZHIoc2VjTGF5ZXJJbmZvKSkgCgkJCShzZWNJZEVuY1hMID0gbnRoKDAgc2VjTGF5ZXJFbmNzKSkKCQkJKHNlY0lkRW5jWFIgPSBudGgoMSBzZWNMYXllckVuY3MpKSAKCQkJKHNlY0lkRW5jWSA9IG50aCgyIHNlY0xheWVyRW5jcykpIAoJCQkoeDFTZWNJZENvb3JkID0geDFDb29yZCkgCgkJCSh5MVNlY0lkQ29vcmQgPSAoLSBtYXgoKHNlY0lkRW5jWSArIHkxRGlmZkNvb3JkKSAKCQkJCSAgICAoc2VjSWRFbmNZICsgeTFUYXBDb29yZCkKCQkJCSkpKSAKCQkJKHgyU2VjSWRDb29yZCA9ICh4MVNlY0lkQ29vcmQgLSAoKDIgKiBvZmZzZXQpICsgbWF4KHgyRGlmZkNvb3JkIHgyVGFwQ29vcmQpKSkpCgkJCSh5MlNlY0lkQ29vcmQgPSBtYXgoKHNlY0lkRW5jWSArIHkyRGlmZkNvb3JkKSAKCQkJCShzZWNJZEVuY1kgKyB5MlRhcENvb3JkKQoJCQkgICAgKSkgCgkJCShzZWNMYXllckNvb3JkcyA9IGxpc3QoKHgxU2VjSWRDb29yZDp5MVNlY0lkQ29vcmQpIAoJCQkJKHgyU2VjSWRDb29yZDp5MlNlY0lkQ29vcmQpCgkJCSAgICApKSAKCQkJKHNlY0lkTGF5ZXJzQ29vcmRUYWJsZVtzZWNMYXllck5hbWVdID0gc2VjTGF5ZXJDb29yZHMpCgkJICAgICkgCgkJICAgIGZvcmVhY2goc2VjTGF5ZXJJbmZvIHNlY0lkTGF5ZXJzVGFibGUgCgkJCShzZWNMYXllck5hbWUgPSBjYXIoc2VjTGF5ZXJJbmZvKSkgCgkJCShzZWNMYXllckNvb3JkcyA9IHNlY0lkTGF5ZXJzQ29vcmRUYWJsZVtzZWNMYXllck5hbWVdKSAKCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IHNlY0xheWVyTmFtZSBzZWNMYXllckNvb3JkcykKCQkgICAgKQoJCSkKCSAgICApIAoJICAgIHdoZW4oKChuICE9IG0pICYmIChjdXJyZW50Q29udGFjdCA9PSAiIikpIAoJCShvbGR4MUNvb3JkID0geDFDb29yZCkgCgkJKHgxQ29vcmQgPSAoKDIuMCAqIG9mZnNldCkgKyAoeDFDb29yZCArIGdhdGV0b2dhdGVTcGFjaW5nKSkpIAoJCShkYmlkID0gKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZMYXllciAKCQkJbGlzdCgob2xkeDFDb29yZDp5MUNvb3JkKSAKCQkJICAgICh4MUNvb3JkOncpCgkJCSkKCQkgICAgKSkgCgkJKHBpbmlkID0gKGRiQ3JlYXRlUGluIGNOZXQgZGJpZCkpCgkJc2V0U0dxKHBpbmlkIAoJCSAgICBsaXN0KCJ0b3AiICJib3R0b20iKSBhY2Nlc3NEaXIKCQkpIAoJCShkaWZmYkJveCA9IGxpc3QoKG9sZHgxQ29vcmQ6eTFDb29yZCkgCgkJCSh4MUNvb3JkOncpCgkJICAgICkpIAoJCXdoZW4obGFiZWxMYXllciAKCQkgICAgKGRiQ3JlYXRlTGFiZWwgdGNDZWxsVmlldyBsYWJlbExheWVyIAoJCQlsaXN0KChjYWFyKGRpZmZiQm94KSArICgoY2FhZHIoZGlmZmJCb3gpIC0gY2FhcihkaWZmYkJveCkpIC8gMi4wKSkgCgkJCSAgICAoY2FkYXIoZGlmZmJCb3gpICsgKChjYWRhZHIoZGlmZmJCb3gpIC0gY2FkYXIoZGlmZmJCb3gpKSAvIDIuMCkpCgkJCSkgbmV0TAoJCQkiY2VudGVyQ2VudGVyIiAiUjAiICJyb21hbiIgbGFiZWxXaWR0aAoJCSAgICApCgkJKSAKCQl3aGVuKChkaWZmSW1wbGFudCAmJiBpbXBsYW50KSAKCQkgICAgKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZJbXBsYW50IAoJCQlsaXN0KGxpc3Qob2xkeDFDb29yZCAKCQkJCSh5MUNvb3JkIC0gZGlmZkltcEVuYykKCQkJICAgICkgCgkJCSAgICBsaXN0KHgxQ29vcmQgCgkJCQkodyArIGRpZmZJbXBFbmMpCgkJCSAgICApCgkJCSkKCQkgICAgKQoJCSkgCgkJd2hlbigoZGlmZkNvcmVJbXBsYW50ICYmIGltcGxhbnQpIAoJCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkNvcmVJbXBsYW50IAoJCQlsaXN0KGxpc3Qob2xkeDFDb29yZCAKCQkJCSh5MUNvb3JkIC0gZGlmZkNvcmVJbXBFbmMpCgkJCSAgICApIAoJCQkgICAgbGlzdCh4MUNvb3JkIAoJCQkJKHcgKyBkaWZmQ29yZUltcEVuYykKCQkJICAgICkKCQkJKQoJCSAgICApCgkJKQoJICAgICkgCgkgICAgd2hlbigoZGlmZkltcGxhbnQgJiYgaW1wbGFudCkgCgkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZJbXBsYW50IAoJCSAgICBsaXN0KGxpc3QoKHgxQ29vcmQgLSBkaWZmRXh0KSAKCQkJICAgICh5MUNvb3JkIC0gZGlmZkltcEVuYykKCQkJKSAKCQkJbGlzdCh4MUNvb3JkIAoJCQkgICAgKHcgKyBkaWZmSW1wRW5jKQoJCQkpCgkJICAgICkKCQkpCgkgICAgKQoJICAgIHdoZW4oKGRpZmZDb3JlSW1wbGFudCAmJiBpbXBsYW50KSAKCQkoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkNvcmVJbXBsYW50IAoJCSAgICBsaXN0KGxpc3QoKHgxQ29vcmQgLSBkaWZmRXh0KSAKCQkJICAgICh5MUNvb3JkIC0gZGlmZkNvcmVJbXBFbmMpCgkJCSkgCgkJCWxpc3QoeDFDb29yZCAKCQkJICAgICh3ICsgZGlmZkNvcmVJbXBFbmMpCgkJCSkKCQkgICAgKQoJCSkKCSAgICApIAoJICAgIChjTmV0ID0gaWYoKGNOZXQgPT0gc05ldCkgZE5ldCBzTmV0KSkgCgkgICAgKG5ldEwgPSBpZigobmV0TCA9PSAiUyIpICJEIiAiUyIpKQoJKSAKCXdoZW4oKG0gIT0gMSkgCgkgICAgd2hlbigoc2hhcmVkU291cmNlICE9ICIiKSAKCQkoZGJDbG9zZSBzaGFyZWRTcmNJZCkKCSAgICApIAoJICAgIHdoZW4oKHNoYXJlZERyYWluICE9ICIiKSAKCQkoZGJDbG9zZSBzaGFyZWREcm5JZCkKCSAgICApCgkpIAoJKGNOZXQgPSBpZigoY05ldCA9PSBzTmV0KSBkTmV0IHNOZXQpKQoJKG5ldEwgPSBpZigobmV0TCA9PSAiUyIpICJEIiAiUyIpKSAKCWlmKChjTmV0ID09IHNOZXQpIHRoZW4gCgkgICAgKG9mZnNldCA9IChtaW5TcGFjZU9mZlNldCArIHNyY09mZnNldCkpIAoJICAgIChjdXJUZXJtT2Zmc2V0ID0gb2Zmc2V0KSAKCSAgICAobmV4dFRlcm1PZmZzZXQgPSAobWluU3BhY2VPZmZTZXQgKyBkcm5PZmZzZXQpKQoJICAgIChjdXJUZXJtU2hDb25MZW5ndGggPSBjb250YWN0U0xlbmd0aCkgCgkgICAgKG5leHRUZXJtU2hDb25MZW5ndGggPSBjb250YWN0RExlbmd0aCkgCgkgICAgKHNlY0lkTGF5ZXIgPSBzcmNTZWNJZExheWVyKSAKCSAgICB3aGVuKHNlY0lkTGF5ZXIgCgkJKHNlY0lkTGF5ZXJzVGFibGUgPSBzcmNTZWNJZExheWVyc1RhYmxlKQoJICAgICkgZWxzZQoJICAgIChvZmZzZXQgPSAobWluU3BhY2VPZmZTZXQgKyBkcm5PZmZzZXQpKSAKCSAgICAoY3VyVGVybU9mZnNldCA9IG9mZnNldCkgCgkgICAgKG5leHRUZXJtT2Zmc2V0ID0gKG1pblNwYWNlT2ZmU2V0ICsgc3JjT2Zmc2V0KSkgCgkgICAgKGN1clRlcm1TaENvbkxlbmd0aCA9IGNvbnRhY3RETGVuZ3RoKSAKCSAgICAobmV4dFRlcm1TaENvbkxlbmd0aCA9IGNvbnRhY3RTTGVuZ3RoKQoJICAgIChzZWNJZExheWVyID0gZHJuU2VjSWRMYXllcikgCgkgICAgd2hlbihzZWNJZExheWVyIAoJCShzZWNJZExheWVyc1RhYmxlID0gZHJuU2VjSWRMYXllcnNUYWJsZSkKCSAgICApCgkpIAoJd2hlbigobGFzdENvbnRhY3QgIT0gIiIpIAoJICAgIChjb250YWN0SWQgPSAoZGJPcGVuQ2VsbFZpZXcgCgkJICAgICh0Y0NlbGxWaWV3fj5saWIpIGxhc3RDb250YWN0ICJzeW1ib2xpYyIgbmlsCgkJICAgICJybiIKCQkpKSAKCSAgICB1bmxlc3MoY29udGFjdElkIAoJCWVycm9yKHNwcmludGYobmlsICJDYW5ub3QgZmluZC9vcGVuIGxhc3RDb250YWN0IGNvbnRhY3QgY2VsbCBgJXMnIiBsYXN0Q29udGFjdCkpCgkgICAgKSAKCSAgICB1bmxlc3MoKGNvbnRhY3RJZH4+aXNQYXJhbUNlbGwpIAoJCWVycm9yKHNwcmludGYobmlsICJOYW1lZCBjZWxsIGlzIG5vdCBhIHBjZWxsIGAlcyciIGxhc3RDb250YWN0KSkKCSAgICApIAoJICAgIChwYXJhbXMgPSAoY29udGFjdElkfj5wYXJhbWV0ZXJzKSkKCSAgICAoaW5zdFBhcmFtcyA9IGxpc3QobGlzdCgidyIgImZsb2F0IiB3KSkpIAoJICAgIHdoZW4oKHBhcmFtc34+aW1wbGFudCkgCgkJKGluc3RQYXJhbXMgPSB4Y29ucyhpbnN0UGFyYW1zIGNvbnRhY3RJbXBQYXJhbSkpCgkgICAgKSAKCSAgICB3aGVuKChwYXJhbXN+PmluV2VsbCkgCgkJKGluc3RQYXJhbXMgPSB4Y29ucyhpbnN0UGFyYW1zIGNvbnRhY3RXZWxsUGFyYW0pKQoJICAgICkgCgkgICAgKGluc3QgPSAoZGJDcmVhdGVQYXJhbUluc3QgdGNDZWxsVmlldyBjb250YWN0SWQgCgkJICAgIHNwcmludGYobmlsICJjJWQiIG0pIAoJCSAgICAoKG9mZnNldCArIHgxQ29vcmQpOnkxQ29vcmQpCgkJICAgICJSMCIgMSBpbnN0UGFyYW1zCgkJKSkgCgkgICAgdW5sZXNzKGluc3QgCgkJZXJyb3IoIkZhaWxlZCB0byBjcmVhdGUgaW5zdGFuY2Ugb2YgbGFzdCBjb250YWN0IikKCSAgICApCgkgICAgdW5sZXNzKGxvZEVuYWJsZWQgCgkJd2hlbigob2Zmc2V0ID4gMWUtMDYpIAoJCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkxheWVyIAoJCQlsaXN0KCh4MUNvb3JkOnkxQ29vcmQpIAoJCQkgICAgKChvZmZzZXQgKyB4MUNvb3JkKTooeTFDb29yZCArIHcpKQoJCQkpCgkJICAgICkgCgkJICAgIHdoZW4oKGRpZmZJbXBsYW50ICYmIGltcGxhbnQpIAoJCQkoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkltcGxhbnQgCgkJCSAgICBsaXN0KGxpc3QoeDFDb29yZCAKCQkJCSAgICAoeTFDb29yZCAtIGRpZmZJbXBFbmMpCgkJCQkpIAoJCQkJbGlzdCgob2Zmc2V0ICsgeDFDb29yZCkgCgkJCQkgICAgKHkxQ29vcmQgKyB3ICsgZGlmZkltcEVuYykKCQkJCSkKCQkJICAgICkKCQkJKQoJCSAgICApIAoJCSAgICB3aGVuKChkaWZmQ29yZUltcGxhbnQgJiYgaW1wbGFudCkgCgkJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmQ29yZUltcGxhbnQgCgkJCSAgICBsaXN0KGxpc3QoeDFDb29yZCAKCQkJCSAgICAoeTFDb29yZCAtIGRpZmZDb3JlSW1wRW5jKQoJCQkJKSAKCQkJCWxpc3QoKG9mZnNldCArIHgxQ29vcmQpIAoJCQkJICAgICh5MUNvb3JkICsgdyArIGRpZmZDb3JlSW1wRW5jKQoJCQkJKQoJCQkgICAgKQoJCQkpCgkJICAgICkKCQkpCgkgICAgKSAKCSAgICB3aGVuKGxvZEVuYWJsZWQgCgkJKGlzU2luZ2xlU3RyYXBwZWQgPSBuaWwpIAoJCShpc05EU3RyYXBwZWQgPSBuaWwpIAoJCXdoZW4obWFudWFsTE9EIAoJCSAgICB3aGVuKExPRENvbnRhY3RNYXBTU3RyYXBwZWQgCgkJCWZvcmVhY2gocGFpciBMT0RDb250YWN0TWFwU1N0cmFwcGVkIAoJCQkgICAgd2hlbigobGFzdENvbnRhY3QgPT0gY2FyKHBhaXIpKSAKCQkJCShpc1NpbmdsZVN0cmFwcGVkID0gdCkgCgkJCQkoaW5uZXJDb250YWN0ID0gY2RyKHBhaXIpKQoJCQkgICAgKQoJCQkpCgkJICAgICkgCgkJICAgIHdoZW4oaXNTaW5nbGVTdHJhcHBlZCAKCQkJKGRiRGVsZXRlT2JqZWN0IGluc3QpIAoJCQkoZGJDbG9zZSBjb250YWN0SWQpIAoJCQkoaW5uZXJDb250YWN0SWQgPSAoZGJPcGVuQ2VsbFZpZXcgCgkJCQkodGNDZWxsVmlld34+bGliKSAKCQkJCWNhcihpbm5lckNvbnRhY3QpICJzeW1ib2xpYyIgbmlsCgkJCQkicm4iCgkJCSAgICApKSAKCQkJdW5sZXNzKChpbm5lckNvbnRhY3RJZH4+aXNQYXJhbUNlbGwpIAoJCQkgICAgZXJyb3Ioc3ByaW50ZihuaWwgIk5hbWVkIGNlbGwgaXMgbm90IGEgcGNlbGwgYCVzJyIgaW5uZXJDb250YWN0KSkKCQkJKQoJCQkoaW5uZXJDb250YWN0TGVuZ3RoID0gKGNhYWRyKChpbm5lckNvbnRhY3RJZH4+ZGlmZkxheWVyQmJveCkpIC0gY2FhcigoaW5uZXJDb250YWN0SWR+PmRpZmZMYXllckJib3gpKSkpIAoJCQkodmlhMVhDcmRJbm5lckNvbiA9IGlmKChpbm5lckNvbnRhY3RJZH4+YkJveFZpYTEpIAoJCQkJYWJzKGNhYXIoKGlubmVyQ29udGFjdElkfj5iQm94VmlhMSkpKSBuaWwKCQkJICAgICkpIAoJCQkobGF5ZXIyWENyZElubmVyQ29uID0gaWYoKGlubmVyQ29udGFjdElkfj5iQm94TGF5ZXIyKSAKCQkJCWFicyhjYWFyKChpbm5lckNvbnRhY3RJZH4+YkJveExheWVyMikpKSBuaWwKCQkJICAgICkpIAoJCQkodmlhMlhDcmRJbm5lckNvbiA9IGlmKChpbm5lckNvbnRhY3RJZH4+YkJveFZpYTIpIAoJCQkJYWJzKGNhYXIoKGlubmVyQ29udGFjdElkfj5iQm94VmlhMikpKSBuaWwKCQkJICAgICkpIAoJCQkobGF5ZXIzWENyZElubmVyQ29uID0gaWYoKGlubmVyQ29udGFjdElkfj5iQm94TGF5ZXIzKSAKCQkJCWFicyhjYWFyKChpbm5lckNvbnRhY3RJZH4+YkJveExheWVyMykpKSBuaWwKCQkJICAgICkpCgkJCShsYXllcjFYQ3JkSW5uZXJDb24gPSBpZigoaW5uZXJDb250YWN0SWR+PmRpZmZMYXllckJib3gpIAoJCQkJYWJzKGNhYXIoKGlubmVyQ29udGFjdElkfj5kaWZmTGF5ZXJCYm94KSkpIG5pbAoJCQkgICAgKSkgCgkJCWlmKChsYXllcjFYQ3JkSW5uZXJDb24gJiYgdmlhMVhDcmRJbm5lckNvbikgdGhlbiAKCQkJICAgICh2aWExRW5jSW5uZXJDb24gPSBhYnMoKGxheWVyMVhDcmRJbm5lckNvbiAtIHZpYTFYQ3JkSW5uZXJDb24pKSkKCQkJKSAKCQkJaWYoKGxheWVyMlhDcmRJbm5lckNvbiAmJiB2aWEyWENyZElubmVyQ29uKSB0aGVuIAoJCQkgICAgKHZpYTJFbmNJbm5lckNvbiA9IGFicygobGF5ZXIxWENyZElubmVyQ29uIC0gdmlhMlhDcmRJbm5lckNvbikpKQoJCQkpIAoJCQlpZigodmlhMUVuY0lubmVyQ29uICYmIHZpYTFFbmNMKSB0aGVuIAoJCQkgICAgKGF2YWlsYWJsZVZpYTFTcGFjZSA9ICh2aWExRW5jSW5uZXJDb24gKyB2aWExRW5jTCkpIAoJCQkgICAgaWYoKHZpYTFNaW5TcGFjZSA+IGF2YWlsYWJsZVZpYTFTcGFjZSkgdGhlbiAKCQkJCShyZXF1aXJlZFZpYTFTcCA9ICh2aWExTWluU3BhY2UgLSBhdmFpbGFibGVWaWExU3BhY2UpKSBlbHNlIAoJCQkJKHJlcXVpcmVkVmlhMVNwID0gMCkKCQkJICAgICkKCQkJKSAKCQkJaWYoKHZpYTJFbmNJbm5lckNvbiAmJiB2aWEyRW5jTCkgdGhlbiAKCQkJICAgIChhdmFpbGFibGVWaWEyU3BhY2UgPSAodmlhMkVuY0lubmVyQ29uICsgdmlhMkVuY0wpKSAKCQkJICAgIGlmKCh2aWEyTWluU3BhY2UgPiBhdmFpbGFibGVWaWEyU3BhY2UpIHRoZW4gCgkJCQkocmVxdWlyZWRWaWEyU3AgPSAodmlhMk1pblNwYWNlIC0gYXZhaWxhYmxlVmlhMlNwYWNlKSkgZWxzZSAKCQkJCShyZXF1aXJlZFZpYTJTcCA9IDApCgkJCSAgICApCgkJCSkKCQkJd2hlbigocmVxdWlyZWRWaWEyU3AgJiYgcmVxdWlyZWRWaWExU3ApIAoJCQkgICAgKHJlcXVpcmVkU3BhY2UgPSBtYXgocmVxdWlyZWRWaWEyU3AgcmVxdWlyZWRWaWExU3ApKQoJCQkpIAoJCQl3aGVuKCgobm90IHJlcXVpcmVkVmlhMlNwKSAmJiByZXF1aXJlZFZpYTFTcCkgCgkJCSAgICAocmVxdWlyZWRTcGFjZSA9IHJlcXVpcmVkVmlhMVNwKQoJCQkpIAoJCQl3aGVuKChvZmZzZXQgPiAxZS0wNikgCgkJCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkxheWVyIAoJCQkJbGlzdCgoeDFDb29yZDp5MUNvb3JkKSAKCQkJCSAgICAoKG9mZnNldCArIHgxQ29vcmQpOih5MUNvb3JkICsgdykpCgkJCQkpCgkJCSAgICApIAoJCQkgICAgd2hlbigoZGlmZkltcGxhbnQgJiYgaW1wbGFudCkgCgkJCQkoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkltcGxhbnQgCgkJCQkgICAgbGlzdChsaXN0KHgxQ29vcmQgCgkJCQkJICAgICh5MUNvb3JkIC0gZGlmZkltcEVuYykKCQkJCQkpIAoJCQkJCWxpc3QoKG9mZnNldCArIHgxQ29vcmQpIAoJCQkJCSAgICAoeTFDb29yZCArIHcgKyBkaWZmSW1wRW5jKQoJCQkJCSkKCQkJCSAgICApCgkJCQkpCgkJCSAgICApIAoJCQkgICAgd2hlbigoZGlmZkNvcmVJbXBsYW50ICYmIGltcGxhbnQpIAoJCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZDb3JlSW1wbGFudCAKCQkJCSAgICBsaXN0KGxpc3QoeDFDb29yZCAKCQkJCQkgICAgKHkxQ29vcmQgLSBkaWZmQ29yZUltcEVuYykKCQkJCQkpIAoJCQkJCWxpc3QoKG9mZnNldCArIHgxQ29vcmQpIAoJCQkJCSAgICAoeTFDb29yZCArIHcgKyBkaWZmQ29yZUltcEVuYykKCQkJCQkpCgkJCQkgICAgKQoJCQkJKQoJCQkgICAgKQoJCQkpIAoJCQl3aGVuKCgoc2IgLSBjb250YWN0TExlbmd0aCkgPj0gKG9mZnNldCArIHJlcXVpcmVkU3BhY2UgKyBpbm5lckNvbnRhY3RMZW5ndGgpKSAKCQkJICAgIChjb250YWN0SWQgPSBpbm5lckNvbnRhY3RJZCkgCgkJCSAgICAoaW5zdCA9IChkYkNyZWF0ZVBhcmFtSW5zdCB0Y0NlbGxWaWV3IGNvbnRhY3RJZCBuaWwgCgkJCQkgICAgKChvZmZzZXQgKyB4MUNvb3JkKTp5MUNvb3JkKQoJCQkJICAgICJSMCIgMSBpbnN0UGFyYW1zCgkJCQkpKSAKCQkJICAgIHVubGVzcyhpbnN0IAoJCQkJZXJyb3Ioc3ByaW50ZihuaWwgIkZhaWxlZCB0byBjcmVhdGUgaW5zdGFuY2Ugb2YgYCVzJyIgaW5uZXJDb250YWN0KSkKCQkJICAgICkgCgkJCSAgICAoc3RyYXBwZWRDb250YWN0SWQgPSAoZGJPcGVuQ2VsbFZpZXcgCgkJCQkgICAgKHRjQ2VsbFZpZXd+PmxpYikgbGFzdENvbnRhY3QgInN5bWJvbGljIiBuaWwKCQkJCSAgICAicm4iCgkJCQkpKQoJCQkgICAgdW5sZXNzKChzdHJhcHBlZENvbnRhY3RJZH4+aXNQYXJhbUNlbGwpIAoJCQkJZXJyb3Ioc3ByaW50ZihuaWwgIk5hbWVkIGNlbGwgaXMgbm90IGEgcGNlbGwgYCVzJyIgbGFzdENvbnRhY3QpKQoJCQkgICAgKSAKCQkJICAgIChzdHJhcHBlZENvbnRhY3RJbnN0ID0gKGRiQ3JlYXRlUGFyYW1JbnN0IHRjQ2VsbFZpZXcgc3RyYXBwZWRDb250YWN0SWQgbmlsIAoJCQkJICAgICgoeDFDb29yZCArIChzYiAtIGNvbnRhY3RMTGVuZ3RoKSk6eTFDb29yZCkKCQkJCSAgICAiUjAiIDEgaW5zdFBhcmFtcwoJCQkJKSkgCgkJCSAgICB1bmxlc3Moc3RyYXBwZWRDb250YWN0SW5zdCAKCQkJCWVycm9yKHNwcmludGYobmlsICJGYWlsZWQgdG8gY3JlYXRlIGluc3RhbmNlIG9mIGAlcyciIGxhc3RDb250YWN0KSkKCQkJICAgICkgCgkJCSAgICAoZGJDbG9zZSBzdHJhcHBlZENvbnRhY3RJZCkgCgkJCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkxheWVyIAoJCQkJbGlzdCgoKHgxQ29vcmQgKyAob2Zmc2V0ICsgaW5uZXJDb250YWN0TGVuZ3RoKSk6eTFDb29yZCkgCgkJCQkgICAgKCh4MUNvb3JkICsgKHNiIC0gY29udGFjdExMZW5ndGgpKTp3KQoJCQkJKQoJCQkgICAgKQoJCQkgICAgd2hlbigoZGlmZkltcGxhbnQgJiYgaW1wbGFudCkgCgkJCQkoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkltcGxhbnQgCgkJCQkgICAgbGlzdChsaXN0KCh4MUNvb3JkICsgKG9mZnNldCArIGlubmVyQ29udGFjdExlbmd0aCkpIAoJCQkJCSAgICAoeTFDb29yZCAtIGRpZmZJbXBFbmMpCgkJCQkJKSAKCQkJCQlsaXN0KCh4MUNvb3JkICsgKHNiIC0gY29udGFjdExMZW5ndGgpKSAKCQkJCQkgICAgKHcgKyBkaWZmSW1wRW5jKQoJCQkJCSkKCQkJCSAgICApCgkJCQkpCgkJCSAgICApIAoJCQkgICAgd2hlbigoZGlmZkNvcmVJbXBsYW50ICYmIGltcGxhbnQpIAoJCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZDb3JlSW1wbGFudCAKCQkJCSAgICBsaXN0KGxpc3QoKHgxQ29vcmQgKyAob2Zmc2V0ICsgaW5uZXJDb250YWN0TGVuZ3RoKSkgCgkJCQkJICAgICh5MUNvb3JkIC0gZGlmZkNvcmVJbXBFbmMpCgkJCQkJKSAKCQkJCQlsaXN0KCh4MUNvb3JkICsgKHNiIC0gY29udGFjdExMZW5ndGgpKSAKCQkJCQkgICAgKHcgKyBkaWZmQ29yZUltcEVuYykKCQkJCQkpCgkJCQkgICAgKQoJCQkJKQoJCQkgICAgKQoJCQkpIAoJCQl1bmxlc3MoKChzYiAtIGNvbnRhY3RMTGVuZ3RoKSA+PSAob2Zmc2V0ICsgcmVxdWlyZWRTcGFjZSArIGlubmVyQ29udGFjdExlbmd0aCkpIAoJCQkgICAgKHN0cmFwcGVkQ29udGFjdElkID0gKGRiT3BlbkNlbGxWaWV3IAoJCQkJICAgICh0Y0NlbGxWaWV3fj5saWIpIGxhc3RDb250YWN0ICJzeW1ib2xpYyIgbmlsCgkJCQkgICAgInJuIgoJCQkJKSkgCgkJCSAgICB1bmxlc3MoKHN0cmFwcGVkQ29udGFjdElkfj5pc1BhcmFtQ2VsbCkgCgkJCQllcnJvcihzcHJpbnRmKG5pbCAiTmFtZWQgY2VsbCBpcyBub3QgYSBwY2VsbCBgJXMnIiBsYXN0Q29udGFjdCkpCgkJCSAgICApIAoJCQkgICAgKHN0cmFwcGVkQ29udGFjdEluc3QgPSAoZGJDcmVhdGVQYXJhbUluc3QgdGNDZWxsVmlldyBzdHJhcHBlZENvbnRhY3RJZCBuaWwgCgkJCQkgICAgKCh4MUNvb3JkICsgKHNiIC0gY29udGFjdExMZW5ndGgpKTp5MUNvb3JkKQoJCQkJICAgICJSMCIgMSBpbnN0UGFyYW1zCgkJCQkpKSAKCQkJICAgIHVubGVzcyhzdHJhcHBlZENvbnRhY3RJbnN0IAoJCQkJZXJyb3Ioc3ByaW50ZihuaWwgIkZhaWxlZCB0byBjcmVhdGUgaW5zdGFuY2Ugb2YgYCVzJyIgCgkJCQkJKHN0cmFwcGVkQ29udGFjdElkfj5jZWxsTmFtZSkKCQkJCSAgICApCgkJCQkpCgkJCSAgICApCgkJCSAgICAoY29udGFjdElkID0gc3RyYXBwZWRDb250YWN0SWQpIAoJCQkgICAgKGluc3QgPSBzdHJhcHBlZENvbnRhY3RJbnN0KSAKCQkJICAgIChkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmTGF5ZXIgCgkJCQlsaXN0KCh4MUNvb3JkOnkxQ29vcmQpIAoJCQkJICAgICgoeDFDb29yZCArIChzYiAtIGNvbnRhY3RMTGVuZ3RoKSk6dykKCQkJCSkKCQkJICAgICkgCgkJCSAgICB3aGVuKChkaWZmSW1wbGFudCAmJiBpbXBsYW50KSAKCQkJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmSW1wbGFudCAKCQkJCSAgICBsaXN0KGxpc3QoeDFDb29yZCAKCQkJCQkgICAgKHkxQ29vcmQgLSBkaWZmSW1wRW5jKQoJCQkJCSkgCgkJCQkJbGlzdCgoeDFDb29yZCArIChzYiAtIGNvbnRhY3RMTGVuZ3RoKSkgCgkJCQkJICAgICh3ICsgZGlmZkltcEVuYykKCQkJCQkpCgkJCQkgICAgKQoJCQkJKQoJCQkgICAgKSAKCQkJICAgIHdoZW4oKGRpZmZDb3JlSW1wbGFudCAmJiBpbXBsYW50KSAKCQkJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmQ29yZUltcGxhbnQgCgkJCQkgICAgbGlzdChsaXN0KHgxQ29vcmQgCgkJCQkJICAgICh5MUNvb3JkIC0gZGlmZkNvcmVJbXBFbmMpCgkJCQkJKSAKCQkJCQlsaXN0KCh4MUNvb3JkICsgKHNiIC0gY29udGFjdExMZW5ndGgpKSAKCQkJCQkgICAgKHcgKyBkaWZmQ29yZUltcEVuYykKCQkJCQkpCgkJCQkgICAgKQoJCQkJKQoJCQkgICAgKQoJCQkpCgkJICAgICkgCgkJICAgIHVubGVzcyhpc1NpbmdsZVN0cmFwcGVkIAoJCQl3aGVuKCgoKChzYiA+IDFlLTA2KSAmJiAob2Zmc2V0ID4gMWUtMDYpKSB8fCAoKHNiID4gMWUtMDYpICYmIChvZmZzZXQgPj0gMC4wKSkpICYmIChzYiA+IChvZmZzZXQgKyBjb250YWN0TExlbmd0aCkpKSAKCQkJICAgIHdoZW4oKG9mZnNldCA+IDFlLTA2KSAKCQkJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmTGF5ZXIgCgkJCQkgICAgbGlzdCgoeDFDb29yZDp5MUNvb3JkKSAKCQkJCQkoKG9mZnNldCArIHgxQ29vcmQpOih5MUNvb3JkICsgdykpCgkJCQkgICAgKQoJCQkJKQoJCQkgICAgKSAKCQkJICAgIChkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmTGF5ZXIgCgkJCQlsaXN0KCgoeDFDb29yZCArIG9mZnNldCArIGNvbnRhY3RMTGVuZ3RoKTp5MUNvb3JkKSAKCQkJCSAgICAoKHgxQ29vcmQgKyBvZmZzZXQgKyBjb250YWN0TExlbmd0aCArIChzYiAtIG9mZnNldCAtIGNvbnRhY3RMTGVuZ3RoKSk6dykKCQkJCSkKCQkJICAgICkgCgkJCSAgICB3aGVuKChkaWZmSW1wbGFudCAmJiBpbXBsYW50KSAKCQkJCXdoZW4oKG9mZnNldCA+IDFlLTA2KSAKCQkJCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkltcGxhbnQgCgkJCQkJbGlzdChsaXN0KHgxQ29vcmQgCgkJCQkJCSh5MUNvb3JkIC0gZGlmZkltcEVuYykKCQkJCQkgICAgKSAKCQkJCQkgICAgbGlzdCgob2Zmc2V0ICsgeDFDb29yZCkgCgkJCQkJCSh3ICsgZGlmZkltcEVuYykKCQkJCQkgICAgKQoJCQkJCSkKCQkJCSAgICApCgkJCQkpIAoJCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZJbXBsYW50IAoJCQkJICAgIGxpc3QobGlzdCgoeDFDb29yZCArIG9mZnNldCArIGNvbnRhY3RMTGVuZ3RoKSAKCQkJCQkgICAgKHkxQ29vcmQgLSBkaWZmSW1wRW5jKQoJCQkJCSkgCgkJCQkJbGlzdCgoeDFDb29yZCArIG9mZnNldCArIGNvbnRhY3RMTGVuZ3RoICsgKHNiIC0gb2Zmc2V0IC0gY29udGFjdExMZW5ndGgpICsgZGlmZkltcEVuYykgCgkJCQkJICAgICh3ICsgZGlmZkltcEVuYykKCQkJCQkpCgkJCQkgICAgKQoJCQkJKQoJCQkgICAgKSAKCQkJICAgIHdoZW4oKGRpZmZDb3JlSW1wbGFudCAmJiBpbXBsYW50KSAKCQkJCXdoZW4oKG9mZnNldCA+IDFlLTA2KSAKCQkJCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkNvcmVJbXBsYW50IAoJCQkJCWxpc3QobGlzdCh4MUNvb3JkIAoJCQkJCQkoeTFDb29yZCAtIGRpZmZDb3JlSW1wRW5jKQoJCQkJCSAgICApIAoJCQkJCSAgICBsaXN0KChvZmZzZXQgKyB4MUNvb3JkKSAKCQkJCQkJKHcgKyBkaWZmQ29yZUltcEVuYykKCQkJCQkgICAgKQoJCQkJCSkKCQkJCSAgICApCgkJCQkpIAoJCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZDb3JlSW1wbGFudCAKCQkJCSAgICBsaXN0KGxpc3QoKHgxQ29vcmQgKyBvZmZzZXQgKyBjb250YWN0TExlbmd0aCkgCgkJCQkJICAgICh5MUNvb3JkIC0gZGlmZkNvcmVJbXBFbmMpCgkJCQkJKSAKCQkJCQlsaXN0KCh4MUNvb3JkICsgb2Zmc2V0ICsgY29udGFjdExMZW5ndGggKyAoc2IgLSBvZmZzZXQgLSBjb250YWN0TExlbmd0aCkgKyBkaWZmQ29yZUltcEVuYykgCgkJCQkJICAgICh3ICsgZGlmZkNvcmVJbXBFbmMpCgkJCQkJKQoJCQkJICAgICkKCQkJCSkKCQkJICAgICkKCQkJKSAKCQkJd2hlbigoKCgob2Zmc2V0ID4gMWUtMDYpICYmIChzYiA+PSAwLjApKSB8fCAoKG9mZnNldCA+IDFlLTA2KSAmJiAoc2IgPiAxZS0wNikpKSAmJiAoKG9mZnNldCArIGNvbnRhY3RMTGVuZ3RoKSA+PSBzYikpIAoJCQkgICAgKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZMYXllciAKCQkJCWxpc3QoKHgxQ29vcmQ6eTFDb29yZCkgCgkJCQkgICAgKChvZmZzZXQgKyB4MUNvb3JkKTp3KQoJCQkJKQoJCQkgICAgKSAKCQkJICAgIHdoZW4oKGRpZmZJbXBsYW50ICYmIGltcGxhbnQpIAoJCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZJbXBsYW50IAoJCQkJICAgIGxpc3QobGlzdCh4MUNvb3JkIAoJCQkJCSAgICAoeTFDb29yZCAtIGRpZmZJbXBFbmMpCgkJCQkJKSAKCQkJCQlsaXN0KChvZmZzZXQgKyB4MUNvb3JkKSAKCQkJCQkgICAgKHcgKyBkaWZmSW1wRW5jKQoJCQkJCSkKCQkJCSAgICApCgkJCQkpCgkJCSAgICApIAoJCQkgICAgd2hlbigoZGlmZkNvcmVJbXBsYW50ICYmIGltcGxhbnQpIAoJCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZDb3JlSW1wbGFudCAKCQkJCSAgICBsaXN0KGxpc3QoeDFDb29yZCAKCQkJCQkgICAgKHkxQ29vcmQgLSBkaWZmQ29yZUltcEVuYykKCQkJCQkpIAoJCQkJCWxpc3QoKG9mZnNldCArIHgxQ29vcmQpIAoJCQkJCSAgICAodyArIGRpZmZDb3JlSW1wRW5jKQoJCQkJCSkKCQkJCSAgICApCgkJCQkpCgkJCSAgICApCgkJCSkKCQkgICAgKQoJCSkgCgkJdW5sZXNzKG1hbnVhbExPRCAKCQkgICAgdW5sZXNzKChidXR0aW5nR2F0ZXNTQiA+PSAwKSAKCQkJd2FybihzcHJpbnRmKG5pbCAiQ2Fubm90IHNwZWNpZnkgbm9uLXplcm8gbnVtYmVyIG9mIGJ1dHRpbmcgZ2F0ZXMgZm9yIFNCICVMXG4iIGJ1dHRpbmdHYXRlc1NCKSkKCQkgICAgKSAKCQkgICAgdW5sZXNzKChidXR0aW5nR2F0ZXNTQiA+PSAxKSAKCQkJKGV4dGVuc2lvbiA9IChvZmZzZXQgKyBjb250YWN0TExlbmd0aCkpCgkJICAgICkgCgkJICAgIHdoZW4oKG9mZnNldCA+IDFlLTA2KSAKCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZMYXllciAKCQkJICAgIGxpc3QoKHgxQ29vcmQ6eTFDb29yZCkgCgkJCQkoKHgxQ29vcmQgKyBvZmZzZXQpOncpCgkJCSAgICApCgkJCSkgCgkJCXdoZW4oKGRpZmZJbXBsYW50ICYmIGltcGxhbnQpIAoJCQkgICAgKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZJbXBsYW50IAoJCQkJbGlzdChsaXN0KHgxQ29vcmQgCgkJCQkJKHkxQ29vcmQgLSBkaWZmSW1wRW5jKQoJCQkJICAgICkgCgkJCQkgICAgbGlzdCgoeDFDb29yZCArIG9mZnNldCkgCgkJCQkJKHkxQ29vcmQgKyB3ICsgZGlmZkltcEVuYykKCQkJCSAgICApCgkJCQkpCgkJCSAgICApCgkJCSkgCgkJCXdoZW4oKGRpZmZDb3JlSW1wbGFudCAmJiBpbXBsYW50KSAKCQkJICAgIChkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmQ29yZUltcGxhbnQgCgkJCQlsaXN0KGxpc3QoeDFDb29yZCAKCQkJCQkoeTFDb29yZCAtIGRpZmZDb3JlSW1wRW5jKQoJCQkJICAgICkgCgkJCQkgICAgbGlzdCgoeDFDb29yZCArIG9mZnNldCkgCgkJCQkJKHkxQ29vcmQgKyB3ICsgZGlmZkNvcmVJbXBFbmMpCgkJCQkgICAgKQoJCQkJKQoJCQkgICAgKQoJCQkpCgkJICAgICkgCgkJICAgIHdoZW4oKGJ1dHRpbmdHYXRlc1NCID49IDApIAoJCQl3aGVuKChidXR0aW5nR2F0ZXNTQiA+PSAxKSAKCQkJICAgIHdoZW4oTE9EQ29udGFjdE1hcFNTdHJhcHBlZCAKCQkJCWZvcmVhY2gocGFpciBMT0RDb250YWN0TWFwU1N0cmFwcGVkIAoJCQkJICAgIHdoZW4oKGxhc3RDb250YWN0ID09IGNhcihwYWlyKSkgCgkJCQkJKGlzU2luZ2xlU3RyYXBwZWQgPSB0KSAKCQkJCQkoaW5uZXJDb250YWN0ID0gY2RyKHBhaXIpKQoJCQkJICAgICkKCQkJCSkKCQkJICAgICkgCgkJCSAgICB3aGVuKExPRENvbnRhY3RNYXBORFN0cmFwcGVkIAoJCQkJZm9yZWFjaChwYWlyIExPRENvbnRhY3RNYXBORFN0cmFwcGVkIAoJCQkJICAgIHdoZW4oKGxhc3RDb250YWN0ID09IGNhcihwYWlyKSkgCgkJCQkJKGlzTkRTdHJhcHBlZCA9IHQpIAoJCQkJCShvdXRlckNvbnRhY3QgPSBjZHIocGFpcikpCgkJCQkgICAgKQoJCQkJKQoJCQkgICAgKQoJCQkpIAoJCQl3aGVuKChpc1NpbmdsZVN0cmFwcGVkICYmIChidXR0aW5nR2F0ZXNTQiA+PSAxKSkgCgkJCSAgICAoZGJEZWxldGVPYmplY3QgaW5zdCkgCgkJCSAgICAoZGJDbG9zZSBjb250YWN0SWQpIAoJCQkgICAgKGNvbnRhY3RJZCA9IChkYk9wZW5DZWxsVmlldyAKCQkJCSAgICAodGNDZWxsVmlld34+bGliKSAKCQkJCSAgICBjYXIoaW5uZXJDb250YWN0KSAic3ltYm9saWMiIG5pbAoJCQkJICAgICJybiIKCQkJCSkpIAoJCQkgICAgdW5sZXNzKChjb250YWN0SWR+PmlzUGFyYW1DZWxsKSAKCQkJCWVycm9yKHNwcmludGYobmlsICJOYW1lZCBjZWxsIGlzIG5vdCBhIHBjZWxsIGAlcyciIGlubmVyQ29udGFjdCkpCgkJCSAgICApCgkJCSAgICAoaW5zdCA9IChkYkNyZWF0ZVBhcmFtSW5zdCB0Y0NlbGxWaWV3IGNvbnRhY3RJZCBuaWwgCgkJCQkgICAgKCh4MUNvb3JkICsgb2Zmc2V0KTowKQoJCQkJICAgICJSMCIgMSBpbnN0UGFyYW1zCgkJCQkpKSAKCQkJICAgIHVubGVzcyhpbnN0IAoJCQkJZXJyb3Ioc3ByaW50ZihuaWwgIkZhaWxlZCB0byBjcmVhdGUgaW5zdGFuY2Ugb2YgYCVzJyIgaW5uZXJDb250YWN0KSkKCQkJICAgICkgCgkJCSAgICAoaW5uZXJDb250YWN0TGVuZ3RoID0gKGNhYWRyKChjb250YWN0SWR+PmRpZmZMYXllckJib3gpKSAtIGNhYXIoKGNvbnRhY3RJZH4+ZGlmZkxheWVyQmJveCkpKSkgCgkJCSAgICB3aGVuKChidXR0aW5nR2F0ZXNTQiA+PSAxKSAKCQkJCXdoZW4oKG1vZChidXR0aW5nR2F0ZXNTQiAyKSA9PSAwKSAKCQkJCSAgICAoZXh0ZW5zaW9uID0gKGlubmVyQ29udGFjdExlbmd0aCArICgyICogY3VyVGVybU9mZnNldCkgKyAoKChidXR0aW5nR2F0ZXNTQiAvIDIpIC0gMSkgKiBjdXJUZXJtU2hDb25MZW5ndGgpICsgKChidXR0aW5nR2F0ZXNTQiAtIDIpICogY3VyVGVybU9mZnNldCkgKyAoKGJ1dHRpbmdHYXRlc1NCIC8gMikgKiBuZXh0VGVybVNoQ29uTGVuZ3RoKSArIChidXR0aW5nR2F0ZXNTQiAqIG5leHRUZXJtT2Zmc2V0KSArIChjb250YWN0TExlbmd0aCArIGN1clRlcm1PZmZzZXQpICsgKGJ1dHRpbmdHYXRlc1NCICogbCkpKQoJCQkJKSAKCQkJCXVubGVzcygobW9kKGJ1dHRpbmdHYXRlc1NCIDIpID09IDApIAoJCQkJICAgIChleHRlbnNpb24gPSAoaW5uZXJDb250YWN0TGVuZ3RoICsgKDIgKiBjdXJUZXJtT2Zmc2V0KSArICgoKGJ1dHRpbmdHYXRlc1NCIC0gMSkgLyAyKSAqIGN1clRlcm1TaENvbkxlbmd0aCkgKyAoKGJ1dHRpbmdHYXRlc1NCIC0gMSkgKiBjdXJUZXJtT2Zmc2V0KSArICgoKGJ1dHRpbmdHYXRlc1NCIC0gMSkgLyAyKSAqIG5leHRUZXJtU2hDb25MZW5ndGgpICsgKChidXR0aW5nR2F0ZXNTQiAtIDEpICogbmV4dFRlcm1PZmZzZXQpICsgKGNvbnRhY3RMTGVuZ3RoICsgbmV4dFRlcm1PZmZzZXQpICsgKGJ1dHRpbmdHYXRlc1NCICogbCkpKQoJCQkJKQoJCQkgICAgKSAKCQkJICAgIChkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmTGF5ZXIgCgkJCQlsaXN0KCgoeDFDb29yZCArIChvZmZzZXQgKyBpbm5lckNvbnRhY3RMZW5ndGgpKTp5MUNvb3JkKSAKCQkJCSAgICAoKHgxQ29vcmQgKyAoZXh0ZW5zaW9uIC0gY29udGFjdExMZW5ndGgpKTp3KQoJCQkJKQoJCQkgICAgKQoJCQkgICAgKG91dGVyQ29udGFjdElkID0gKGRiT3BlbkNlbGxWaWV3IAoJCQkJICAgICh0Y0NlbGxWaWV3fj5saWIpIGxhc3RDb250YWN0ICJzeW1ib2xpYyIgbmlsCgkJCQkgICAgInJuIgoJCQkJKSkgCgkJCSAgICB1bmxlc3MoKG91dGVyQ29udGFjdElkfj5pc1BhcmFtQ2VsbCkgCgkJCQllcnJvcihzcHJpbnRmKG5pbCAiTmFtZWQgY2VsbCBpcyBub3QgYSBwY2VsbCBgJXMnIiBsYXN0Q29udGFjdCkpCgkJCSAgICApIAoJCQkgICAgKG91dGVySW5zdCA9IChkYkNyZWF0ZVBhcmFtSW5zdCB0Y0NlbGxWaWV3IG91dGVyQ29udGFjdElkIG5pbCAKCQkJCSAgICAoKHgxQ29vcmQgKyAoZXh0ZW5zaW9uIC0gY29udGFjdExMZW5ndGgpKTowKQoJCQkJICAgICJSMCIgMSBpbnN0UGFyYW1zCgkJCQkpKSAKCQkJICAgIHVubGVzcyhvdXRlckluc3QgCgkJCQllcnJvcihzcHJpbnRmKG5pbCAiRmFpbGVkIHRvIGNyZWF0ZSBpbnN0YW5jZSBvZiBgJXMnIiBsYXN0Q29udGFjdCkpCgkJCSAgICApIAoJCQkgICAgKGRiQ2xvc2Ugb3V0ZXJDb250YWN0SWQpCgkJCSAgICB3aGVuKChkaWZmSW1wbGFudCAmJiBpbXBsYW50KSAKCQkJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmSW1wbGFudCAKCQkJCSAgICBsaXN0KGxpc3QoKHgxQ29vcmQgKyBvZmZzZXQgKyBpbm5lckNvbnRhY3RMZW5ndGgpIAoJCQkJCSAgICAoeTFDb29yZCAtIGRpZmZJbXBFbmMpCgkJCQkJKSAKCQkJCQlsaXN0KCh4MUNvb3JkICsgKGV4dGVuc2lvbiAtIGNvbnRhY3RMTGVuZ3RoKSkgCgkJCQkJICAgICh5MUNvb3JkICsgdyArIGRpZmZJbXBFbmMpCgkJCQkJKQoJCQkJICAgICkKCQkJCSkKCQkJICAgICkgCgkJCSAgICB3aGVuKChkaWZmQ29yZUltcGxhbnQgJiYgaW1wbGFudCkgCgkJCQkoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkNvcmVJbXBsYW50IAoJCQkJICAgIGxpc3QobGlzdCgoeDFDb29yZCArIG9mZnNldCArIGlubmVyQ29udGFjdExlbmd0aCkgCgkJCQkJICAgICh5MUNvb3JkIC0gZGlmZkNvcmVJbXBFbmMpCgkJCQkJKSAKCQkJCQlsaXN0KCh4MUNvb3JkICsgKGV4dGVuc2lvbiAtIGNvbnRhY3RMTGVuZ3RoKSkgCgkJCQkJICAgICh5MUNvb3JkICsgdyArIGRpZmZDb3JlSW1wRW5jKQoJCQkJCSkKCQkJCSAgICApCgkJCQkpCgkJCSAgICApCgkJCSkgCgkJCXdoZW4oKChub3QgaXNTaW5nbGVTdHJhcHBlZCkgJiYgCgkJCQkoYnV0dGluZ0dhdGVzU0IgPj0gMSkpIAoJCQkgICAgKG91dGVyQ29udGFjdElkID0gKGRiT3BlbkNlbGxWaWV3IAoJCQkJICAgICh0Y0NlbGxWaWV3fj5saWIpIAoJCQkJICAgIGNhcihvdXRlckNvbnRhY3QpICJzeW1ib2xpYyIgbmlsCgkJCQkgICAgInJuIgoJCQkJKSkgCgkJCSAgICB1bmxlc3MoKG91dGVyQ29udGFjdElkfj5pc1BhcmFtQ2VsbCkgCgkJCQllcnJvcihzcHJpbnRmKG5pbCAiTmFtZWQgY2VsbCBpcyBub3QgYSBwY2VsbCBgJXMnIiBvdXRlckNvbnRhY3QpKQoJCQkgICAgKSAKCQkJICAgIChvdXRlckNvbnRhY3RMZW5ndGggPSAoY2FhZHIoKG91dGVyQ29udGFjdElkfj5kaWZmTGF5ZXJCYm94KSkgLSBjYWFyKChvdXRlckNvbnRhY3RJZH4+ZGlmZkxheWVyQmJveCkpKSkgCgkJCSAgICB3aGVuKChidXR0aW5nR2F0ZXNTQiA+PSAxKSAKCQkJCXdoZW4oKG1vZChidXR0aW5nR2F0ZXNTQiAyKSA9PSAwKSAKCQkJCSAgICAoZXh0ZW5zaW9uID0gKGNvbnRhY3RMTGVuZ3RoICsgKDIgKiBjdXJUZXJtT2Zmc2V0KSArICgoKGJ1dHRpbmdHYXRlc1NCIC8gMikgLSAxKSAqIGN1clRlcm1TaENvbkxlbmd0aCkgKyAoKGJ1dHRpbmdHYXRlc1NCIC0gMikgKiBjdXJUZXJtT2Zmc2V0KSArICgoYnV0dGluZ0dhdGVzU0IgLyAyKSAqIG5leHRUZXJtU2hDb25MZW5ndGgpICsgKGJ1dHRpbmdHYXRlc1NCICogbmV4dFRlcm1PZmZzZXQpICsgKG91dGVyQ29udGFjdExlbmd0aCArIGN1clRlcm1PZmZzZXQpICsgKGJ1dHRpbmdHYXRlc1NCICogbCkpKQoJCQkJKSAKCQkJCXVubGVzcygobW9kKGJ1dHRpbmdHYXRlc1NCIDIpID09IDApIAoJCQkJICAgIChleHRlbnNpb24gPSAoY29udGFjdExMZW5ndGggKyAoMiAqIGN1clRlcm1PZmZzZXQpICsgKCgoYnV0dGluZ0dhdGVzU0IgLSAxKSAvIDIpICogY3VyVGVybVNoQ29uTGVuZ3RoKSArICgoYnV0dGluZ0dhdGVzU0IgLSAxKSAqIGN1clRlcm1PZmZzZXQpICsgKCgoYnV0dGluZ0dhdGVzU0IgLSAxKSAvIDIpICogbmV4dFRlcm1TaENvbkxlbmd0aCkgKyAoKGJ1dHRpbmdHYXRlc1NCIC0gMSkgKiBuZXh0VGVybU9mZnNldCkgKyAob3V0ZXJDb250YWN0TGVuZ3RoICsgbmV4dFRlcm1PZmZzZXQpICsgKGJ1dHRpbmdHYXRlc1NCICogbCkpKQoJCQkJKQoJCQkgICAgKQoJCQkgICAgKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZMYXllciAKCQkJCWxpc3QoKCh4MUNvb3JkICsgKG9mZnNldCArIGNvbnRhY3RMTGVuZ3RoKSk6eTFDb29yZCkgCgkJCQkgICAgKCh4MUNvb3JkICsgZXh0ZW5zaW9uKTp3KQoJCQkJKQoJCQkgICAgKSAKCQkJICAgIHdoZW4oKGRpZmZJbXBsYW50ICYmIGltcGxhbnQpIAoJCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZJbXBsYW50IAoJCQkJICAgIGxpc3QobGlzdCgoeDFDb29yZCArIG9mZnNldCArIGNvbnRhY3RMTGVuZ3RoKSAKCQkJCQkgICAgKHkxQ29vcmQgLSBkaWZmSW1wRW5jKQoJCQkJCSkgCgkJCQkJbGlzdCgoeDFDb29yZCArIGV4dGVuc2lvbiArIGRpZmZJbXBFbmMpIAoJCQkJCSAgICAoeTFDb29yZCArIHcgKyBkaWZmSW1wRW5jKQoJCQkJCSkKCQkJCSAgICApCgkJCQkpCgkJCSAgICApIAoJCQkgICAgd2hlbigoZGlmZkNvcmVJbXBsYW50ICYmIGltcGxhbnQpIAoJCQkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZDb3JlSW1wbGFudCAKCQkJCSAgICBsaXN0KGxpc3QoKHgxQ29vcmQgKyBvZmZzZXQgKyBjb250YWN0TExlbmd0aCkgCgkJCQkJICAgICh5MUNvb3JkIC0gZGlmZkNvcmVJbXBFbmMpCgkJCQkJKSAKCQkJCQlsaXN0KCh4MUNvb3JkICsgZXh0ZW5zaW9uICsgZGlmZkNvcmVJbXBFbmMpIAoJCQkJCSAgICAoeTFDb29yZCArIHcgKyBkaWZmQ29yZUltcEVuYykKCQkJCQkpCgkJCQkgICAgKQoJCQkJKQoJCQkgICAgKQoJCQkpCgkJICAgICkKCQkpCgkgICAgKSAKCSAgICAobWFzdGVyID0gKGluc3R+Pm1hc3RlcikpIAoJICAgIHVubGVzcygoKG1hc3Rlcn4+dG9wTGF5ZXIpICYmIChtYXN0ZXJ+PnRvcExheWVyUGluQmJveCkpIAoJCWVycm9yKHNwcmludGYobmlsICJNaXNzaW5nIHRvcExheWVyIGFuZC9vciB0b3BMYXllclBpbkJib3ggY2VsbCBwcm9wZXJ0aWVzIGluIGAlcyciIGxhc3RDb250YWN0KSkKCSAgICApIAoJICAgIChiQm94ID0gbGlzdChsaXN0KChjYWFyKChtYXN0ZXJ+PnRvcExheWVyUGluQmJveCkpICsgeDFDb29yZCArIG9mZnNldCkgCgkJCWNhZGFyKChtYXN0ZXJ+PnRvcExheWVyUGluQmJveCkpCgkJICAgICkgCgkJICAgIGxpc3QoKGNhYWRyKChtYXN0ZXJ+PnRvcExheWVyUGluQmJveCkpICsgeDFDb29yZCArIG9mZnNldCkgCgkJCWNhZGFkcigobWFzdGVyfj50b3BMYXllclBpbkJib3gpKQoJCSAgICApCgkJKSkKCSAgICB3aGVuKChsb2RFbmFibGVkICYmIG1hbnVhbExPRCAmJiBpc1NpbmdsZVN0cmFwcGVkKSAKCQl1bmxlc3MoKChzYiAtIGNvbnRhY3RMTGVuZ3RoKSA+PSAob2Zmc2V0ICsgcmVxdWlyZWRTcGFjZSArIGlubmVyQ29udGFjdExlbmd0aCkpIAoJCSAgICAoYkJveCA9IGxpc3QobGlzdCgoY2FhcigobWFzdGVyfj50b3BMYXllclBpbkJib3gpKSArIHgxQ29vcmQgKyAoc2IgLSBjb250YWN0TExlbmd0aCkpIAoJCQkJY2FkYXIoKG1hc3Rlcn4+dG9wTGF5ZXJQaW5CYm94KSkKCQkJICAgICkgCgkJCSAgICBsaXN0KChjYWFkcigobWFzdGVyfj50b3BMYXllclBpbkJib3gpKSArIHgxQ29vcmQgKyAoc2IgLSBjb250YWN0TExlbmd0aCkpIAoJCQkJY2FkYWRyKChtYXN0ZXJ+PnRvcExheWVyUGluQmJveCkpCgkJCSAgICApCgkJCSkpCgkJKQoJICAgICkgCgkgICAgKGRiaWQgPSAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgCgkJICAgIChtYXN0ZXJ+PnRvcExheWVyKSBiQm94CgkJKSkgCgkgICAgKHBpbmlkID0gKGRiQ3JlYXRlUGluIGNOZXQgZGJpZCkpIAoJICAgIHNldFNHcShwaW5pZCAKCQlsaXN0KCJ0b3AiICJib3R0b20iICJyaWdodCIpIGFjY2Vzc0RpcgoJICAgICkgCgkgICAgd2hlbihsYWJlbExheWVyIAoJCShkYkNyZWF0ZUxhYmVsIHRjQ2VsbFZpZXcgbGFiZWxMYXllciAKCQkgICAgbGlzdCgoY2FhcihiQm94KSArICgoY2FhZHIoYkJveCkgLSBjYWFyKGJCb3gpKSAvIDIuMCkpIAoJCQkoY2FkYXIoYkJveCkgKyAoKGNhZGFkcihiQm94KSAtIGNhZGFyKGJCb3gpKSAvIDIuMCkpCgkJICAgICkgbmV0TAoJCSAgICAiY2VudGVyQ2VudGVyIiAiUjAiICJyb21hbiIgbGFiZWxXaWR0aAoJCSkKCSAgICApCgkgICAgKHkxRGlmZkNvb3JkID0gY2FkYXIoKG1hc3Rlcn4+ZGlmZkxheWVyQmJveCkpKSAKCSAgICAoeTFUYXBDb29yZCA9IGlmKChtYXN0ZXJ+PnRhcExheWVyQmJveCkgCgkJICAgIGFicyhjYWRhcigobWFzdGVyfj50YXBMYXllckJib3gpKSkgMC4wCgkJKSkgCgkgICAgKHkyRGlmZkNvb3JkID0gY2FkYWRyKChtYXN0ZXJ+PmRpZmZMYXllckJib3gpKSkgCgkgICAgKHkyVGFwQ29vcmQgPSBpZigobWFzdGVyfj50YXBMYXllckJib3gpIAoJCSAgICBhYnMoY2FkYWRyKChtYXN0ZXJ+PnRhcExheWVyQmJveCkpKSAwLjAKCQkpKSAKCSAgICAoeDJEaWZmQ29vcmQgPSBjYWFkcigobWFzdGVyfj5kaWZmTGF5ZXJCYm94KSkpCgkgICAgKHgyVGFwQ29vcmQgPSBpZigobWFzdGVyfj50YXBMYXllckJib3gpIAoJCSAgICBhYnMoY2FhZHIoKG1hc3Rlcn4+dGFwTGF5ZXJCYm94KSkpIDAuMAoJCSkpIAoJICAgIHVubGVzcyhsb2RFbmFibGVkIAoJCXdoZW4od2VsbExheWVyIAoJCSAgICB1bmxlc3MoKG1hc3Rlcn4+ZGlmZkxheWVyQmJveCkgCgkJCWVycm9yKHNwcmludGYobmlsICJDYW5ub3QgZmluZCBkaWZmTGF5ZXJCYm94IHByb3BlcnR5IGZvciBgJXMnIiBsYXN0Q29udGFjdCkpCgkJICAgICkgCgkJICAgICh5MVdlbGxDb29yZCA9IG1pbigoLSBtYXgoKHdlbGxFbmNEaWZmWSArIHkxRGlmZkNvb3JkKSAKCQkJCSAgICAod2VsbEVuY1RhcFkgKyB5MVRhcENvb3JkKQoJCQkJKSkgeTFXZWxsQ29vcmQKCQkJKSkgCgkJICAgICh5MldlbGxDb29yZCA9IG1heCgod2VsbEVuY0RpZmZZICsgeTJEaWZmQ29vcmQpIAoJCQkgICAgKHdlbGxFbmNUYXBZICsgeTJUYXBDb29yZCkgeTJXZWxsQ29vcmQKCQkJKSkgCgkJICAgICh4MldlbGxDb29yZCA9IChvZmZzZXQgKyB4MUNvb3JkICsgbWF4KCh3ZWxsRW5jRGlmZlggKyB4MkRpZmZDb29yZCkgCgkJCQkod2VsbEVuY1RhcFggKyB4MlRhcENvb3JkKQoJCQkgICAgKSkpCgkJKSAKCQl3aGVuKGlkTGF5ZXIgCgkJICAgIHVubGVzcygobWFzdGVyfj5kaWZmTGF5ZXJCYm94KSAKCQkJZXJyb3Ioc3ByaW50ZihuaWwgIkNhbm5vdCBmaW5kIGRpZmZMYXllckJib3ggcHJvcGVydHkgZm9yIGAlcyciIGxhc3RDb250YWN0KSkKCQkgICAgKSAKCQkgICAgZm9yZWFjaChsYXllckluZm8gaWRMYXllcnNUYWJsZSAKCQkJKGxheWVyTmFtZSA9IGNhcihsYXllckluZm8pKSAKCQkJKGxheWVyRW5jcyA9IGNhZHIobGF5ZXJJbmZvKSkgCgkJCShpZEVuY1hMID0gbnRoKDAgbGF5ZXJFbmNzKSkKCQkJKGlkRW5jWFIgPSBudGgoMSBsYXllckVuY3MpKSAKCQkJKGlkRW5jWSA9IG50aCgyIGxheWVyRW5jcykpIAoJCQkoeDFJZENvb3JkID0gbnRoKDAgCgkJCQljYXIoaWRMYXllcnNDb29yZFRhYmxlW2xheWVyTmFtZV0pCgkJCSAgICApKSAKCQkJKHkxSWRDb29yZCA9IG50aCgxIAoJCQkJY2FyKGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdKQoJCQkgICAgKSkgCgkJCSh4MklkQ29vcmQgPSBudGgoMCAKCQkJCWNhZHIoaWRMYXllcnNDb29yZFRhYmxlW2xheWVyTmFtZV0pCgkJCSAgICApKQoJCQkoeTJJZENvb3JkID0gbnRoKDEgCgkJCQljYWRyKGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdKQoJCQkgICAgKSkgCgkJCSh5MUlkQ29vcmQgPSBtaW4oKC0gbWF4KChpZEVuY1kgKyB5MURpZmZDb29yZCkgCgkJCQkJKGlkRW5jWSArIHkxVGFwQ29vcmQpCgkJCQkgICAgKSkgeTFJZENvb3JkCgkJCSAgICApKSAKCQkJKHkySWRDb29yZCA9IG1heCgoaWRFbmNZICsgeTJEaWZmQ29vcmQpIAoJCQkJKGlkRW5jWSArIHkyVGFwQ29vcmQpIHkySWRDb29yZAoJCQkgICAgKSkgCgkJCSh4MklkQ29vcmQgPSAob2Zmc2V0ICsgeDFDb29yZCArIG1heCgoaWRFbmNYUiArIHgyRGlmZkNvb3JkKSAKCQkJCSAgICAoaWRFbmNYUiArIHgyVGFwQ29vcmQpCgkJCQkpKSkgCgkJCShsYXllckNvb3JkcyA9IGxpc3QoKHgxSWRDb29yZDp5MUlkQ29vcmQpIAoJCQkJKHgySWRDb29yZDp5MklkQ29vcmQpCgkJCSAgICApKQoJCQkoaWRMYXllcnNDb29yZFRhYmxlW2xheWVyTmFtZV0gPSBsYXllckNvb3JkcykKCQkgICAgKQoJCSkgCgkJd2hlbihzZWNJZExheWVyIAoJCSAgICB1bmxlc3MoKG1hc3Rlcn4+ZGlmZkxheWVyQmJveCkgCgkJCWVycm9yKHNwcmludGYobmlsICJDYW5ub3QgZmluZCBkaWZmTGF5ZXJCYm94IHByb3BlcnR5IGZvciBgJXMnIiBsYXN0Q29udGFjdCkpCgkJICAgICkgCgkJICAgIGZvcmVhY2goc2VjTGF5ZXJJbmZvIHNlY0lkTGF5ZXJzVGFibGUgCgkJCShzZWNMYXllck5hbWUgPSBjYXIoc2VjTGF5ZXJJbmZvKSkgCgkJCShzZWNMYXllckVuY3MgPSBjYWRyKHNlY0xheWVySW5mbykpIAoJCQkoc2VjSWRFbmNYTCA9IG50aCgwIHNlY0xheWVyRW5jcykpCgkJCShzZWNJZEVuY1hSID0gbnRoKDEgc2VjTGF5ZXJFbmNzKSkgCgkJCShzZWNJZEVuY1kgPSBudGgoMiBzZWNMYXllckVuY3MpKSAKCQkJKHgxU2VjSWRDb29yZCA9IHgxQ29vcmQpIAoJCQkoeTFTZWNJZENvb3JkID0gKC0gbWF4KChzZWNJZEVuY1kgKyB5MURpZmZDb29yZCkgCgkJCQkgICAgKHNlY0lkRW5jWSArIHkxVGFwQ29vcmQpCgkJCQkpKSkgCgkJCSh5MlNlY0lkQ29vcmQgPSBtYXgoKHNlY0lkRW5jWSArIHkyRGlmZkNvb3JkKSAKCQkJCShzZWNJZEVuY1kgKyB5MlRhcENvb3JkKQoJCQkgICAgKSkKCQkJKHgyU2VjSWRDb29yZCA9IChvZmZzZXQgKyB4MUNvb3JkICsgbWF4KChzZWNJZEVuY1hSICsgeDJEaWZmQ29vcmQpIAoJCQkJICAgIChzZWNJZEVuY1hSICsgeDJUYXBDb29yZCkKCQkJCSkpKSAKCQkJKHNlY0xheWVyQ29vcmRzID0gbGlzdCgoeDFTZWNJZENvb3JkOnkxU2VjSWRDb29yZCkgCgkJCQkoeDJTZWNJZENvb3JkOnkyU2VjSWRDb29yZCkKCQkJICAgICkpIAoJCQkoc2VjSWRMYXllcnNDb29yZFRhYmxlW3NlY0xheWVyTmFtZV0gPSBzZWNMYXllckNvb3JkcykKCQkgICAgKQoJCSkKCSAgICApIAoJICAgIHdoZW4obG9kRW5hYmxlZCAKCQl3aGVuKG1hbnVhbExPRCAKCQkgICAgd2hlbih3ZWxsTGF5ZXIgCgkJCXVubGVzcygobWFzdGVyfj5kaWZmTGF5ZXJCYm94KSAKCQkJICAgIGVycm9yKHNwcmludGYobmlsICJDYW5ub3QgZmluZCBkaWZmTGF5ZXJCYm94IHByb3BlcnR5IGZvciBgJXMnIiBsYXN0Q29udGFjdCkpCgkJCSkgCgkJCSh5MVdlbGxDb29yZCA9IG1pbigoLSBtYXgoKHdlbGxFbmNEaWZmWSArIHkxRGlmZkNvb3JkKSAKCQkJCQkod2VsbEVuY1RhcFkgKyB5MVRhcENvb3JkKQoJCQkJICAgICkpIHkxV2VsbENvb3JkCgkJCSAgICApKSAKCQkJKHkyV2VsbENvb3JkID0gbWF4KCh3ZWxsRW5jRGlmZlkgKyB5MkRpZmZDb29yZCkgCgkJCQkod2VsbEVuY1RhcFkgKyB5MlRhcENvb3JkKSB5MldlbGxDb29yZAoJCQkgICAgKSkgCgkJCXdoZW4oaXNTaW5nbGVTdHJhcHBlZCAKCQkJICAgICh4MldlbGxDb29yZCA9ICh4MUNvb3JkICsgKHNiIC0gbWF4KHgyRGlmZkNvb3JkIHgyVGFwQ29vcmQpKSArIAoJCQkJICAgIG1heCgod2VsbEVuY0RpZmZYICsgeDJEaWZmQ29vcmQpIAoJCQkJCSh3ZWxsRW5jVGFwWCArIHgyVGFwQ29vcmQpCgkJCQkgICAgKSkpCgkJCSkKCQkJdW5sZXNzKGlzU2luZ2xlU3RyYXBwZWQgCgkJCSAgICB3aGVuKCgoKHNiID4gMWUtMDYpICYmIChvZmZzZXQgPiAxZS0wNikgJiYgKHNiID4gKG9mZnNldCArIGNvbnRhY3RMTGVuZ3RoKSkpIHx8ICgoc2IgPiAxZS0wNikgJiYgKG9mZnNldCA9PSAwLjApICYmIChzYiA+PSAob2Zmc2V0ICsgY29udGFjdExMZW5ndGgpKSkpIAoJCQkJKHgyV2VsbENvb3JkID0gKHgxQ29vcmQgKyAoc2IgLSBtYXgoeDJEaWZmQ29vcmQgeDJUYXBDb29yZCkpICsgCgkJCQkJbWF4KCh3ZWxsRW5jRGlmZlggKyB4MkRpZmZDb29yZCkgCgkJCQkJICAgICh3ZWxsRW5jVGFwWCArIHgyVGFwQ29vcmQpCgkJCQkJKSkpCgkJCSAgICApIAoJCQkgICAgd2hlbigoKChvZmZzZXQgPiAxZS0wNikgJiYgKHNiID09IDAuMCkgJiYgKChvZmZzZXQgKyBjb250YWN0TExlbmd0aCkgPj0gc2IpKSB8fCAoKG9mZnNldCA+IDFlLTA2KSAmJiAoc2IgPiAxZS0wNikgJiYgKChvZmZzZXQgKyBjb250YWN0TExlbmd0aCkgPj0gc2IpKSkgCgkJCQkoeDJXZWxsQ29vcmQgPSAoeDFDb29yZCArIG9mZnNldCArIG1heCgod2VsbEVuY0RpZmZYICsgeDJEaWZmQ29vcmQpIAoJCQkJCSAgICAod2VsbEVuY1RhcFggKyB4MlRhcENvb3JkKQoJCQkJCSkpKQoJCQkgICAgKQoJCQkpCgkJICAgICkgCgkJICAgIHdoZW4oaWRMYXllciAKCQkJdW5sZXNzKChtYXN0ZXJ+PmRpZmZMYXllckJib3gpIAoJCQkgICAgZXJyb3Ioc3ByaW50ZihuaWwgIkNhbm5vdCBmaW5kIGRpZmZMYXllckJib3ggcHJvcGVydHkgZm9yIGAlcyciIGxhc3RDb250YWN0KSkKCQkJKSAKCQkJZm9yZWFjaChsYXllckluZm8gaWRMYXllcnNUYWJsZSAKCQkJICAgIChsYXllck5hbWUgPSBjYXIobGF5ZXJJbmZvKSkgCgkJCSAgICAobGF5ZXJFbmNzID0gY2FkcihsYXllckluZm8pKSAKCQkJICAgIChpZEVuY1hMID0gbnRoKDAgbGF5ZXJFbmNzKSkKCQkJICAgIChpZEVuY1hSID0gbnRoKDEgbGF5ZXJFbmNzKSkgCgkJCSAgICAoaWRFbmNZID0gbnRoKDIgbGF5ZXJFbmNzKSkgCgkJCSAgICAoeDFJZENvb3JkID0gbnRoKDAgCgkJCQkgICAgY2FyKGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdKQoJCQkJKSkgCgkJCSAgICAoeTFJZENvb3JkID0gbnRoKDEgCgkJCQkgICAgY2FyKGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdKQoJCQkJKSkgCgkJCSAgICAoeDJJZENvb3JkID0gbnRoKDAgCgkJCQkgICAgY2FkcihpZExheWVyc0Nvb3JkVGFibGVbbGF5ZXJOYW1lXSkKCQkJCSkpCgkJCSAgICAoeTJJZENvb3JkID0gbnRoKDEgCgkJCQkgICAgY2FkcihpZExheWVyc0Nvb3JkVGFibGVbbGF5ZXJOYW1lXSkKCQkJCSkpIAoJCQkgICAgKHkxSWRDb29yZCA9IG1pbigoLSBtYXgoKGlkRW5jWSArIHkxRGlmZkNvb3JkKSAKCQkJCQkgICAgKGlkRW5jWSArIHkxVGFwQ29vcmQpCgkJCQkJKSkgeTFJZENvb3JkCgkJCQkpKSAKCQkJICAgICh5MklkQ29vcmQgPSBtYXgoKGlkRW5jWSArIHkyRGlmZkNvb3JkKSAKCQkJCSAgICAoaWRFbmNZICsgeTJUYXBDb29yZCkgeTJJZENvb3JkCgkJCQkpKSAKCQkJICAgIHdoZW4oaXNTaW5nbGVTdHJhcHBlZCAKCQkJCSh4MklkQ29vcmQgPSAoeDFDb29yZCArICgoc2IgLSBtYXgoeDJEaWZmQ29vcmQgeDJUYXBDb29yZCkpICsgCgkJCQkJICAgIG1heCgoaWRFbmNYUiArIHgyRGlmZkNvb3JkKSAKCQkJCQkJKGlkRW5jWFIgKyB4MlRhcENvb3JkKQoJCQkJCSAgICApKSkpCgkJCSAgICApIAoJCQkgICAgdW5sZXNzKGlzU2luZ2xlU3RyYXBwZWQgCgkJCQl3aGVuKCgoKHNiID4gMWUtMDYpICYmIChvZmZzZXQgPiAxZS0wNikgJiYgKHNiID49IChvZmZzZXQgKyBjb250YWN0TExlbmd0aCkpKSB8fCAoKHNiID4gMWUtMDYpICYmIChvZmZzZXQgPj0gMC4wKSAmJiAoc2IgPj0gKG9mZnNldCArIGNvbnRhY3RMTGVuZ3RoKSkpKSAKCQkJCSAgICAoeDJJZENvb3JkID0gKHgxQ29vcmQgKyAoc2IgLSBtYXgoeDJEaWZmQ29vcmQgeDJUYXBDb29yZCkpICsgCgkJCQkJICAgIG1heCgoaWRFbmNYUiArIHgyRGlmZkNvb3JkKSAKCQkJCQkJKGlkRW5jWFIgKyB4MlRhcENvb3JkKQoJCQkJCSAgICApKSkKCQkJCSkgCgkJCQl3aGVuKCgoKG9mZnNldCA+IDFlLTA2KSAmJiAoc2IgPj0gMC4wKSAmJiAoKG9mZnNldCArIGNvbnRhY3RMTGVuZ3RoKSA+PSBzYikpIHx8ICgob2Zmc2V0ID4gMWUtMDYpICYmIChzYiA+IDFlLTA2KSAmJiAoKG9mZnNldCArIGNvbnRhY3RMTGVuZ3RoKSA+PSBzYikpKSAKCQkJCSAgICAoeDJJZENvb3JkID0gKHgxQ29vcmQgKyBvZmZzZXQgKyBtYXgoKGlkRW5jWFIgKyB4MkRpZmZDb29yZCkgCgkJCQkJCShpZEVuY1hSICsgeDJUYXBDb29yZCkKCQkJCQkgICAgKSkpCgkJCQkpCgkJCSAgICApCgkJCSAgICAobGF5ZXJDb29yZHMgPSBsaXN0KCh4MUlkQ29vcmQ6eTFJZENvb3JkKSAKCQkJCSAgICAoeDJJZENvb3JkOnkySWRDb29yZCkKCQkJCSkpIAoJCQkgICAgKGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdID0gbGF5ZXJDb29yZHMpCgkJCSkKCQkgICAgKSAKCQkgICAgd2hlbihzZWNJZExheWVyIAoJCQl1bmxlc3MoKG1hc3Rlcn4+ZGlmZkxheWVyQmJveCkgCgkJCSAgICBlcnJvcihzcHJpbnRmKG5pbCAiQ2Fubm90IGZpbmQgZGlmZkxheWVyQmJveCBwcm9wZXJ0eSBmb3IgYCVzJyIgbGFzdENvbnRhY3QpKQoJCQkpIAoJCQlmb3JlYWNoKHNlY0xheWVySW5mbyBzZWNJZExheWVyc1RhYmxlIAoJCQkgICAgKHNlY0xheWVyTmFtZSA9IGNhcihzZWNMYXllckluZm8pKSAKCQkJICAgIChzZWNMYXllckVuY3MgPSBjYWRyKHNlY0xheWVySW5mbykpIAoJCQkgICAgKHNlY0lkRW5jWEwgPSBudGgoMCBzZWNMYXllckVuY3MpKQoJCQkgICAgKHNlY0lkRW5jWFIgPSBudGgoMSBzZWNMYXllckVuY3MpKSAKCQkJICAgIChzZWNJZEVuY1kgPSBudGgoMiBzZWNMYXllckVuY3MpKSAKCQkJICAgICh4MVNlY0lkQ29vcmQgPSB4MUNvb3JkKSAKCQkJICAgICh5MVNlY0lkQ29vcmQgPSAoLSBtYXgoKHNlY0lkRW5jWSArIHkxRGlmZkNvb3JkKSAKCQkJCQkoc2VjSWRFbmNZICsgeTFUYXBDb29yZCkKCQkJCSAgICApKSkgCgkJCSAgICAoeTJTZWNJZENvb3JkID0gbWF4KChzZWNJZEVuY1kgKyB5MkRpZmZDb29yZCkgCgkJCQkgICAgKHNlY0lkRW5jWSArIHkyVGFwQ29vcmQpCgkJCQkpKQoJCQkgICAgd2hlbihpc1NpbmdsZVN0cmFwcGVkIAoJCQkJKHgyU2VjSWRDb29yZCA9ICh4MUNvb3JkICsgKChzYiAtIG1heCh4MkRpZmZDb29yZCB4MlRhcENvb3JkKSkgKyAKCQkJCQkgICAgbWF4KChzZWNJZEVuY1hSICsgeDJEaWZmQ29vcmQpIAoJCQkJCQkoc2VjSWRFbmNYUiArIHgyVGFwQ29vcmQpCgkJCQkJICAgICkpKSkKCQkJICAgICkgCgkJCSAgICB1bmxlc3MoaXNTaW5nbGVTdHJhcHBlZCAKCQkJCXdoZW4oKCgoc2IgPiAxZS0wNikgJiYgKG9mZnNldCA+IDFlLTA2KSAmJiAoc2IgPj0gKG9mZnNldCArIGNvbnRhY3RMTGVuZ3RoKSkpIHx8ICgoc2IgPiAxZS0wNikgJiYgKG9mZnNldCA+PSAwLjApICYmIChzYiA+PSAob2Zmc2V0ICsgY29udGFjdExMZW5ndGgpKSkpIAoJCQkJICAgICh4MlNlY0lkQ29vcmQgPSAoeDFDb29yZCArIChzYiAtIG1heCh4MkRpZmZDb29yZCB4MlRhcENvb3JkKSkgKyAKCQkJCQkgICAgbWF4KChzZWNJZEVuY1hSICsgeDJEaWZmQ29vcmQpIAoJCQkJCQkoc2VjSWRFbmNYUiArIHgyVGFwQ29vcmQpCgkJCQkJICAgICkpKQoJCQkJKSAKCQkJCXdoZW4oKCgob2Zmc2V0ID4gMWUtMDYpICYmIChzYiA+PSAwLjApICYmICgob2Zmc2V0ICsgY29udGFjdExMZW5ndGgpID49IHNiKSkgfHwgKChvZmZzZXQgPiAxZS0wNikgJiYgKHNiID4gMWUtMDYpICYmICgob2Zmc2V0ICsgY29udGFjdExMZW5ndGgpID49IHNiKSkpIAoJCQkJICAgICh4MlNlY0lkQ29vcmQgPSAoeDFDb29yZCArIG9mZnNldCArIG1heCgoc2VjSWRFbmNYUiArIHgyRGlmZkNvb3JkKSAKCQkJCQkJKHNlY0lkRW5jWFIgKyB4MlRhcENvb3JkKQoJCQkJCSAgICApKSkKCQkJCSkKCQkJICAgICkgCgkJCSAgICAoc2VjTGF5ZXJDb29yZHMgPSBsaXN0KCh4MVNlY0lkQ29vcmQ6eTFTZWNJZENvb3JkKSAKCQkJCSAgICAoeDJTZWNJZENvb3JkOnkyU2VjSWRDb29yZCkKCQkJCSkpIAoJCQkgICAgKHNlY0lkTGF5ZXJzQ29vcmRUYWJsZVtzZWNMYXllck5hbWVdID0gc2VjTGF5ZXJDb29yZHMpCgkJCSkKCQkgICAgKQoJCSkgCgkJdW5sZXNzKG1hbnVhbExPRCAKCQkgICAgd2hlbih3ZWxsTGF5ZXIgCgkJCXVubGVzcygobWFzdGVyfj5kaWZmTGF5ZXJCYm94KSAKCQkJICAgIGVycm9yKHNwcmludGYobmlsICJDYW5ub3QgZmluZCBkaWZmTGF5ZXJCYm94IHByb3BlcnR5IGZvciBgJXMnIiBsYXN0Q29udGFjdCkpCgkJCSkgCgkJCSh5MVdlbGxDb29yZCA9IG1pbigoLSBtYXgoKHdlbGxFbmNEaWZmWSArIHkxRGlmZkNvb3JkKSAKCQkJCQkod2VsbEVuY1RhcFkgKyB5MVRhcENvb3JkKQoJCQkJICAgICkpIHkxV2VsbENvb3JkCgkJCSAgICApKSAKCQkJKHkyV2VsbENvb3JkID0gbWF4KCh3ZWxsRW5jRGlmZlkgKyB5MkRpZmZDb29yZCkgCgkJCQkod2VsbEVuY1RhcFkgKyB5MlRhcENvb3JkKSB5MldlbGxDb29yZAoJCQkgICAgKSkgCgkJCXdoZW4oaXNTaW5nbGVTdHJhcHBlZCAKCQkJICAgICh4MldlbGxDb29yZCA9ICh4MUNvb3JkICsgZXh0ZW5zaW9uICsgd2VsbEVuY1RhcFgpKQoJCQkpCgkJCXVubGVzcyhpc1NpbmdsZVN0cmFwcGVkIAoJCQkgICAgKHgyV2VsbENvb3JkID0gKHgxQ29vcmQgKyBleHRlbnNpb24gKyB3ZWxsRW5jRGlmZlgpKQoJCQkpCgkJICAgICkgCgkJICAgIHdoZW4oaWRMYXllciAKCQkJdW5sZXNzKChtYXN0ZXJ+PmRpZmZMYXllckJib3gpIAoJCQkgICAgZXJyb3Ioc3ByaW50ZihuaWwgIkNhbm5vdCBmaW5kIGRpZmZMYXllckJib3ggcHJvcGVydHkgZm9yIGAlcyciIGxhc3RDb250YWN0KSkKCQkJKSAKCQkJZm9yZWFjaChsYXllckluZm8gaWRMYXllcnNUYWJsZSAKCQkJICAgIChsYXllck5hbWUgPSBjYXIobGF5ZXJJbmZvKSkgCgkJCSAgICAobGF5ZXJFbmNzID0gY2FkcihsYXllckluZm8pKSAKCQkJICAgIChpZEVuY1hMID0gbnRoKDAgbGF5ZXJFbmNzKSkKCQkJICAgIChpZEVuY1hSID0gbnRoKDEgbGF5ZXJFbmNzKSkgCgkJCSAgICAoaWRFbmNZID0gbnRoKDIgbGF5ZXJFbmNzKSkgCgkJCSAgICAoeDFJZENvb3JkID0gbnRoKDAgCgkJCQkgICAgY2FyKGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdKQoJCQkJKSkgCgkJCSAgICAoeTFJZENvb3JkID0gbnRoKDEgCgkJCQkgICAgY2FyKGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdKQoJCQkJKSkgCgkJCSAgICAoeDJJZENvb3JkID0gbnRoKDAgCgkJCQkgICAgY2FkcihpZExheWVyc0Nvb3JkVGFibGVbbGF5ZXJOYW1lXSkKCQkJCSkpCgkJCSAgICAoeTJJZENvb3JkID0gbnRoKDEgCgkJCQkgICAgY2FkcihpZExheWVyc0Nvb3JkVGFibGVbbGF5ZXJOYW1lXSkKCQkJCSkpIAoJCQkgICAgKHkxSWRDb29yZCA9IG1pbigoLSBtYXgoKGlkRW5jWSArIHkxRGlmZkNvb3JkKSAKCQkJCQkgICAgKGlkRW5jWSArIHkxVGFwQ29vcmQpCgkJCQkJKSkgeTFJZENvb3JkCgkJCQkpKSAKCQkJICAgICh5MklkQ29vcmQgPSBtYXgoKGlkRW5jWSArIHkyRGlmZkNvb3JkKSAKCQkJCSAgICAoaWRFbmNZICsgeTJUYXBDb29yZCkgeTJJZENvb3JkCgkJCQkpKSAKCQkJICAgICh4MklkQ29vcmQgPSAoeDFDb29yZCArIGV4dGVuc2lvbiArIGlkRW5jWFIpKSAKCQkJICAgIChsYXllckNvb3JkcyA9IGxpc3QoKHgxSWRDb29yZDp5MUlkQ29vcmQpIAoJCQkJICAgICh4MklkQ29vcmQ6eTJJZENvb3JkKQoJCQkJKSkKCQkJICAgIChpZExheWVyc0Nvb3JkVGFibGVbbGF5ZXJOYW1lXSA9IGxheWVyQ29vcmRzKQoJCQkpCgkJICAgICkgCgkJICAgIHdoZW4oc2VjSWRMYXllciAKCQkJdW5sZXNzKChtYXN0ZXJ+PmRpZmZMYXllckJib3gpIAoJCQkgICAgZXJyb3Ioc3ByaW50ZihuaWwgIkNhbm5vdCBmaW5kIGRpZmZMYXllckJib3ggcHJvcGVydHkgZm9yIGAlcyciIGxhc3RDb250YWN0KSkKCQkJKSAKCQkJZm9yZWFjaChzZWNMYXllckluZm8gc2VjSWRMYXllcnNUYWJsZSAKCQkJICAgIChzZWNMYXllck5hbWUgPSBjYXIoc2VjTGF5ZXJJbmZvKSkgCgkJCSAgICAoc2VjTGF5ZXJFbmNzID0gY2FkcihzZWNMYXllckluZm8pKSAKCQkJICAgIChzZWNJZEVuY1hMID0gbnRoKDAgc2VjTGF5ZXJFbmNzKSkKCQkJICAgIChzZWNJZEVuY1hSID0gbnRoKDEgc2VjTGF5ZXJFbmNzKSkgCgkJCSAgICAoc2VjSWRFbmNZID0gbnRoKDIgc2VjTGF5ZXJFbmNzKSkgCgkJCSAgICAoeDFTZWNJZENvb3JkID0geDFDb29yZCkgCgkJCSAgICAoeTFTZWNJZENvb3JkID0gKC0gbWF4KChzZWNJZEVuY1kgKyB5MURpZmZDb29yZCkgCgkJCQkJKHNlY0lkRW5jWSArIHkxVGFwQ29vcmQpCgkJCQkgICAgKSkpIAoJCQkgICAgKHkyU2VjSWRDb29yZCA9IG1heCgoc2VjSWRFbmNZICsgeTJEaWZmQ29vcmQpIAoJCQkJICAgIChzZWNJZEVuY1kgKyB5MlRhcENvb3JkKQoJCQkJKSkKCQkJICAgICh4MlNlY0lkQ29vcmQgPSAoeDFDb29yZCArIGV4dGVuc2lvbiArIHNlY0lkRW5jWFIpKSAKCQkJICAgIChzZWNMYXllckNvb3JkcyA9IGxpc3QoKHgxU2VjSWRDb29yZDp5MVNlY0lkQ29vcmQpIAoJCQkJICAgICh4MlNlY0lkQ29vcmQ6eTJTZWNJZENvb3JkKQoJCQkJKSkgCgkJCSAgICAoc2VjSWRMYXllcnNDb29yZFRhYmxlW3NlY0xheWVyTmFtZV0gPSBzZWNMYXllckNvb3JkcykKCQkJKQoJCSAgICApCgkJKQoJICAgICkgCgkgICAgd2hlbigoZGlmZkltcGxhbnQgJiYgaW1wbGFudCkgCgkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZJbXBsYW50IAoJCSAgICBsaXN0KGxpc3QoeDFDb29yZCAKCQkJICAgICh5MUNvb3JkIC0gZGlmZkltcEVuYykKCQkJKSAKCQkJbGlzdCgoeDFDb29yZCArIGRpZmZFeHQpIAoJCQkgICAgKHkxQ29vcmQgKyB3ICsgZGlmZkltcEVuYykKCQkJKQoJCSAgICApCgkJKQoJICAgICkgCgkgICAgd2hlbigoZGlmZkNvcmVJbXBsYW50ICYmIGltcGxhbnQpIAoJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmQ29yZUltcGxhbnQgCgkJICAgIGxpc3QobGlzdCh4MUNvb3JkIAoJCQkgICAgKHkxQ29vcmQgLSBkaWZmQ29yZUltcEVuYykKCQkJKSAKCQkJbGlzdCgoeDFDb29yZCArIGRpZmZFeHQpIAoJCQkgICAgKHkxQ29vcmQgKyB3ICsgZGlmZkNvcmVJbXBFbmMpCgkJCSkKCQkgICAgKQoJCSkKCSAgICApCgkgICAgKGRiQ2xvc2UgY29udGFjdElkKQoJKSAKCShkYmlkID0gKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZMYXllciAKCQlsaXN0KCh4MUNvb3JkOnkxQ29vcmQpIAoJCSAgICAoKHgxQ29vcmQgKyBkaWZmRXh0KTooeTFDb29yZCArIHcpKQoJCSkKCSAgICApKSAKCShwaW5pZCA9IChkYkNyZWF0ZVBpbiBjTmV0IGRiaWQpKQoJc2V0U0dxKHBpbmlkIAoJICAgIGxpc3QoInRvcCIgImJvdHRvbSIgInJpZ2h0IikgYWNjZXNzRGlyCgkpIAoJd2hlbihzZWNJZExheWVyIAoJICAgIGZvcmVhY2goc2VjTGF5ZXJJbmZvIHNlY0lkTGF5ZXJzVGFibGUgCgkJKHNlY0xheWVyTmFtZSA9IGNhcihzZWNMYXllckluZm8pKSAKCQkoc2VjTGF5ZXJDb29yZHMgPSBzZWNJZExheWVyc0Nvb3JkVGFibGVbc2VjTGF5ZXJOYW1lXSkgCgkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IHNlY0xheWVyTmFtZSBzZWNMYXllckNvb3JkcykKCSAgICApCgkpIAoJd2hlbigobGFzdENvbnRhY3QgPT0gIiIpIAoJICAgIHdoZW4oKGRpZmZJbXBsYW50ICYmIGltcGxhbnQpIAoJCShkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmSW1wbGFudCAKCQkgICAgbGlzdChsaXN0KHgxQ29vcmQgCgkJCSAgICAoeTFDb29yZCAtIGRpZmZJbXBFbmMpCgkJCSkgCgkJCWxpc3QoKHgxQ29vcmQgKyBkaWZmRXh0ICsgZGlmZkltcEVuYykgCgkJCSAgICAoeTFDb29yZCArIHcgKyBkaWZmSW1wRW5jKQoJCQkpCgkJICAgICkKCQkpCgkgICAgKSAKCSAgICB3aGVuKChkaWZmQ29yZUltcGxhbnQgJiYgaW1wbGFudCkgCgkJKGRiQ3JlYXRlUmVjdCB0Y0NlbGxWaWV3IGRpZmZDb3JlSW1wbGFudCAKCQkgICAgbGlzdChsaXN0KHgxQ29vcmQgCgkJCSAgICAoeTFDb29yZCAtIGRpZmZDb3JlSW1wRW5jKQoJCQkpIAoJCQlsaXN0KCh4MUNvb3JkICsgZGlmZkV4dCArIGRpZmZDb3JlSW1wRW5jKSAKCQkJICAgICh5MUNvb3JkICsgdyArIGRpZmZDb3JlSW1wRW5jKQoJCQkpCgkJICAgICkKCQkpCgkgICAgKSAKCSAgICB3aGVuKChsb2RFbmFibGVkICYmIChub3QgbWFudWFsTE9EKSAmJiAKCQkgICAgKGJ1dHRpbmdHYXRlc1NCID49IDEpKSAKCQl3aGVuKChtb2QoYnV0dGluZ0dhdGVzU0IgMikgPT0gMCkgCgkJICAgIChleHRlbnNpb24gPSAoY29udGFjdExMZW5ndGggKyAoKGJ1dHRpbmdHYXRlc1NCIC8gMikgKiBjdXJUZXJtU2hDb25MZW5ndGgpICsgKGJ1dHRpbmdHYXRlc1NCICogY3VyVGVybU9mZnNldCkgKyAoKGJ1dHRpbmdHYXRlc1NCIC8gMikgKiBuZXh0VGVybVNoQ29uTGVuZ3RoKSArIChidXR0aW5nR2F0ZXNTQiAqIG5leHRUZXJtT2Zmc2V0KSArIChidXR0aW5nR2F0ZXNTQiAqIGwpKSkKCQkpIAoJCXVubGVzcygobW9kKGJ1dHRpbmdHYXRlc1NCIDIpID09IDApIAoJCSAgICAoZXh0ZW5zaW9uID0gKGNvbnRhY3RMTGVuZ3RoICsgKCgoYnV0dGluZ0dhdGVzU0IgKyAxKSAvIDIpICogY3VyVGVybVNoQ29uTGVuZ3RoKSArICgoYnV0dGluZ0dhdGVzU0IgKyAxKSAqIGN1clRlcm1PZmZzZXQpICsgKCgoYnV0dGluZ0dhdGVzU0IgLSAxKSAvIDIpICogbmV4dFRlcm1TaENvbkxlbmd0aCkgKyAoKGJ1dHRpbmdHYXRlc1NCIC0gMSkgKiBuZXh0VGVybU9mZnNldCkgKyAoYnV0dGluZ0dhdGVzU0IgKiBsKSkpCgkJKSAKCQkoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkxheWVyIAoJCSAgICBsaXN0KCgoeDFDb29yZCArIGRpZmZFeHQpOnkxQ29vcmQpIAoJCQkoKHgxQ29vcmQgKyBleHRlbnNpb24pOih5MUNvb3JkICsgdykpCgkJICAgICkKCQkpIAoJCXdoZW4oKGRpZmZJbXBsYW50ICYmIGltcGxhbnQpIAoJCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkltcGxhbnQgCgkJCWxpc3QobGlzdCgoeDFDb29yZCArIGRpZmZFeHQpIAoJCQkJKHkxQ29vcmQgLSBkaWZmSW1wRW5jKQoJCQkgICAgKSAKCQkJICAgIGxpc3QoKHgxQ29vcmQgKyBleHRlbnNpb24gKyBkaWZmSW1wRW5jKSAKCQkJCSh5MUNvb3JkICsgdyArIGRpZmZJbXBFbmMpCgkJCSAgICApCgkJCSkKCQkgICAgKQoJCSkKCQl3aGVuKChkaWZmQ29yZUltcGxhbnQgJiYgaW1wbGFudCkgCgkJICAgIChkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmQ29yZUltcGxhbnQgCgkJCWxpc3QobGlzdCgoeDFDb29yZCArIGRpZmZFeHQpIAoJCQkJKHkxQ29vcmQgLSBkaWZmQ29yZUltcEVuYykKCQkJICAgICkgCgkJCSAgICBsaXN0KCh4MUNvb3JkICsgZXh0ZW5zaW9uICsgZGlmZkNvcmVJbXBFbmMpIAoJCQkJKHkxQ29vcmQgKyB3ICsgZGlmZkNvcmVJbXBFbmMpCgkJCSAgICApCgkJCSkKCQkgICAgKQoJCSkKCSAgICApIAoJICAgIHdoZW4oKGxvZEVuYWJsZWQgJiYgbWFudWFsTE9EICYmIChzYiA+IGRpZmZFeHQpKSAKCQkoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkxheWVyIAoJCSAgICBsaXN0KCgoeDFDb29yZCArIGRpZmZFeHQpOnkxQ29vcmQpIAoJCQkoKHgxQ29vcmQgKyBzYik6KHkxQ29vcmQgKyB3KSkKCQkgICAgKQoJCSkgCgkJd2hlbigoZGlmZkltcGxhbnQgJiYgaW1wbGFudCkgCgkJICAgIChkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBkaWZmSW1wbGFudCAKCQkJbGlzdChsaXN0KCh4MUNvb3JkICsgZGlmZkV4dCkgCgkJCQkoeTFDb29yZCAtIGRpZmZJbXBFbmMpCgkJCSAgICApIAoJCQkgICAgbGlzdCgoeDFDb29yZCArIHNiICsgZGlmZkltcEVuYykgCgkJCQkodyArIGRpZmZJbXBFbmMpCgkJCSAgICApCgkJCSkKCQkgICAgKQoJCSkgCgkJd2hlbigoZGlmZkNvcmVJbXBsYW50ICYmIGltcGxhbnQpIAoJCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgZGlmZkNvcmVJbXBsYW50IAoJCQlsaXN0KGxpc3QoKHgxQ29vcmQgKyBkaWZmRXh0KSAKCQkJCSh5MUNvb3JkIC0gZGlmZkNvcmVJbXBFbmMpCgkJCSAgICApIAoJCQkgICAgbGlzdCgoeDFDb29yZCArIHNiICsgZGlmZkNvcmVJbXBFbmMpIAoJCQkJKHcgKyBkaWZmQ29yZUltcEVuYykKCQkJICAgICkKCQkJKQoJCSAgICApCgkJKQoJICAgICkKCSAgICB3aGVuKGxhYmVsTGF5ZXIgCgkJKGRiQ3JlYXRlTGFiZWwgdGNDZWxsVmlldyBsYWJlbExheWVyIAoJCSAgICBsaXN0KCh4MUNvb3JkICsgKGRpZmZFeHQgLyAyLjApKSAKCQkJKHkxQ29vcmQgKyAodyAvIDIuMCkpCgkJICAgICkgbmV0TAoJCSAgICAiY2VudGVyQ2VudGVyIiAiUjAiICJyb21hbiIgbGFiZWxXaWR0aAoJCSkKCSAgICApIAoJICAgIHdoZW4od2VsbExheWVyIAoJCSh4MldlbGxDb29yZCA9ICh4MUNvb3JkICsgZGlmZkV4dCArIHdlbGxFbmNEaWZmWCkpIAoJCXdoZW4oKGxvZEVuYWJsZWQgJiYgKG5vdCBtYW51YWxMT0QpICYmIAoJCQkoYnV0dGluZ0dhdGVzU0IgPj0gMSkpIAoJCSAgICAoeDJXZWxsQ29vcmQgPSAoeDFDb29yZCArIGV4dGVuc2lvbiArIHdlbGxFbmNEaWZmWCkpCgkJKSAKCQl3aGVuKChsb2RFbmFibGVkICYmIG1hbnVhbExPRCAmJiAoc2IgPiBkaWZmRXh0KSkgCgkJICAgICh4MldlbGxDb29yZCA9ICh4MUNvb3JkICsgc2IgKyB3ZWxsRW5jRGlmZlgpKQoJCSkgCgkJKHkyV2VsbENvb3JkID0gbWF4KCh5MUNvb3JkICsgdyArIHdlbGxFbmNEaWZmWSkgeTJXZWxsQ29vcmQpKQoJICAgICkgCgkgICAgd2hlbihpZExheWVyIAoJCWZvcmVhY2gobGF5ZXJJbmZvIGlkTGF5ZXJzVGFibGUgCgkJICAgIChsYXllck5hbWUgPSBjYXIobGF5ZXJJbmZvKSkgCgkJICAgIChsYXllckVuY3MgPSBjYWRyKGxheWVySW5mbykpIAoJCSAgICAoaWRFbmNYTCA9IG50aCgwIGxheWVyRW5jcykpCgkJICAgIChpZEVuY1hSID0gbnRoKDEgbGF5ZXJFbmNzKSkgCgkJICAgIChpZEVuY1kgPSBudGgoMiBsYXllckVuY3MpKSAKCQkgICAgKHgxSWRDb29yZCA9IG50aCgwIAoJCQkgICAgY2FyKGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdKQoJCQkpKSAKCQkgICAgKHkxSWRDb29yZCA9IG50aCgxIAoJCQkgICAgY2FyKGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdKQoJCQkpKSAKCQkgICAgKHgySWRDb29yZCA9IG50aCgwIAoJCQkgICAgY2FkcihpZExheWVyc0Nvb3JkVGFibGVbbGF5ZXJOYW1lXSkKCQkJKSkKCQkgICAgKHkySWRDb29yZCA9IG50aCgxIAoJCQkgICAgY2FkcihpZExheWVyc0Nvb3JkVGFibGVbbGF5ZXJOYW1lXSkKCQkJKSkgCgkJICAgICh4MklkQ29vcmQgPSAoeDFDb29yZCArIGRpZmZFeHQgKyBpZEVuY1hSKSkgCgkJICAgIHdoZW4oKGxvZEVuYWJsZWQgJiYgKG5vdCBtYW51YWxMT0QpICYmIAoJCQkgICAgKGJ1dHRpbmdHYXRlc1NCID49IDEpKSAKCQkJKHgySWRDb29yZCA9ICh4MUNvb3JkICsgZXh0ZW5zaW9uICsgaWRFbmNYUikpCgkJICAgICkgCgkJICAgIHdoZW4oKGxvZEVuYWJsZWQgJiYgbWFudWFsTE9EICYmIChzYiA+IGRpZmZFeHQpKSAKCQkJKHgySWRDb29yZCA9ICh4MUNvb3JkICsgc2IgKyBpZEVuY1hSKSkKCQkgICAgKSAKCQkgICAgKHkySWRDb29yZCA9IG1heCgoeTFDb29yZCArIHcgKyBpZEVuY1kpIHkySWRDb29yZCkpCgkJICAgIChsYXllckNvb3JkcyA9IGxpc3QoKHgxSWRDb29yZDp5MUlkQ29vcmQpIAoJCQkgICAgKHgySWRDb29yZDp5MklkQ29vcmQpCgkJCSkpIAoJCSAgICAoaWRMYXllcnNDb29yZFRhYmxlW2xheWVyTmFtZV0gPSBsYXllckNvb3JkcykKCQkpCgkgICAgKSAKCSAgICB3aGVuKHNlY0lkTGF5ZXIgCgkJZm9yZWFjaChzZWNMYXllckluZm8gc2VjSWRMYXllcnNUYWJsZSAKCQkgICAgKHNlY0xheWVyTmFtZSA9IGNhcihzZWNMYXllckluZm8pKSAKCQkgICAgKHNlY0xheWVyRW5jcyA9IGNhZHIoc2VjTGF5ZXJJbmZvKSkgCgkJICAgIChzZWNJZEVuY1hMID0gbnRoKDAgc2VjTGF5ZXJFbmNzKSkKCQkgICAgKHNlY0lkRW5jWFIgPSBudGgoMSBzZWNMYXllckVuY3MpKSAKCQkgICAgKHNlY0lkRW5jWSA9IG50aCgyIHNlY0xheWVyRW5jcykpIAoJCSAgICAoeDFTZWNJZENvb3JkID0geDFDb29yZCkgCgkJICAgICh5MVNlY0lkQ29vcmQgPSAoLSBtYXgoKHNlY0lkRW5jWSArIHkxRGlmZkNvb3JkKSAKCQkJCShzZWNJZEVuY1kgKyB5MVRhcENvb3JkKQoJCQkgICAgKSkpIAoJCSAgICAoeDJTZWNJZENvb3JkID0gKHgxQ29vcmQgKyBkaWZmRXh0ICsgc2VjSWRFbmNYUikpCgkJICAgIHdoZW4oKGxvZEVuYWJsZWQgJiYgKG5vdCBtYW51YWxMT0QpICYmIAoJCQkgICAgKGJ1dHRpbmdHYXRlc1NCID49IDEpKSAKCQkJKHgyU2VjSWRDb29yZCA9ICh4MUNvb3JkICsgZXh0ZW5zaW9uICsgc2VjSWRFbmNYUikpCgkJICAgICkgCgkJICAgIHdoZW4oKGxvZEVuYWJsZWQgJiYgbWFudWFsTE9EICYmIChzYiA+IGRpZmZFeHQpKSAKCQkJKHgyU2VjSWRDb29yZCA9ICh4MUNvb3JkICsgc2IgKyBzZWNJZEVuY1hSKSkKCQkgICAgKSAKCQkgICAgKHkyU2VjSWRDb29yZCA9ICh5MUNvb3JkICsgdyArIHNlY0lkRW5jWSkpIAoJCSAgICAoc2VjTGF5ZXJDb29yZHMgPSBsaXN0KCh4MVNlY0lkQ29vcmQ6eTFTZWNJZENvb3JkKSAKCQkJICAgICh4MlNlY0lkQ29vcmQ6eTJTZWNJZENvb3JkKQoJCQkpKSAKCQkgICAgKHNlY0lkTGF5ZXJzQ29vcmRUYWJsZVtzZWNMYXllck5hbWVdID0gc2VjTGF5ZXJDb29yZHMpCgkJKSAKCQlmb3JlYWNoKHNlY0xheWVySW5mbyBzZWNJZExheWVyc1RhYmxlIAoJCSAgICAoc2VjTGF5ZXJOYW1lID0gY2FyKHNlY0xheWVySW5mbykpIAoJCSAgICAoc2VjTGF5ZXJDb29yZHMgPSBzZWNJZExheWVyc0Nvb3JkVGFibGVbc2VjTGF5ZXJOYW1lXSkgCgkJICAgIChkYkNyZWF0ZVJlY3QgdGNDZWxsVmlldyBzZWNMYXllck5hbWUgc2VjTGF5ZXJDb29yZHMpCgkJKQoJICAgICkKCSkgCgl3aGVuKHdlbGxMYXllciAKCSAgICAod2VsbExheWVyX1hvcmlnaW4gPSB4MVdlbGxDb29yZCkgCgkgICAgKHdlbGxMYXllcl9Zb3JpZ2luID0gKHkxV2VsbENvb3JkICsgKC0gd2VsbEVuY1lEaWZmKSkpIAoJICAgICh3ZWxsTGF5ZXJfWGVuZCA9IHgyV2VsbENvb3JkKSAKCSAgICAod2VsbExheWVyX1llbmQgPSAoeTJXZWxsQ29vcmQgKyB3ZWxsRW5jWURpZmYpKQoJICAgIHdoZW4oKCh3ZWxsTGF5ZXJfWGVuZCAtIHdlbGxMYXllcl9Yb3JpZ2luKSA8IHdlbGxtaW5XaWR0aCkgCgkJKERpZmZfd2VsbF93aWR0aCA9ICh3ZWxsbWluV2lkdGggLSAod2VsbExheWVyX1hlbmQgLSB3ZWxsTGF5ZXJfWG9yaWdpbikpKSAKCQkoeDJXZWxsQ29vcmQgPSAoeDJXZWxsQ29vcmQgKyAoRGlmZl93ZWxsX3dpZHRoIC8gMikpKSAKCQkoeDFXZWxsQ29vcmQgPSAoeDFXZWxsQ29vcmQgLSAoRGlmZl93ZWxsX3dpZHRoIC8gMikpKQoJICAgICkgCgkgICAgd2hlbigoKHdlbGxMYXllcl9ZZW5kIC0gd2VsbExheWVyX1lvcmlnaW4pIDwgd2VsbG1pbldpZHRoKSAKCQkoRGlmZl93ZWxsX3dpZHRoID0gKHdlbGxtaW5XaWR0aCAtICh3ZWxsTGF5ZXJfWWVuZCAtIHdlbGxMYXllcl9Zb3JpZ2luKSkpIAoJCSh5MVdlbGxDb29yZCA9ICh5MVdlbGxDb29yZCAtIChEaWZmX3dlbGxfd2lkdGggLyAyKSkpIAoJCSh5MldlbGxDb29yZCA9ICh5MldlbGxDb29yZCArIChEaWZmX3dlbGxfd2lkdGggLyAyKSkpCgkgICAgKSAKCSAgICAoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgd2VsbExheWVyIAoJCWxpc3QoKHgxV2VsbENvb3JkOih5MVdlbGxDb29yZCArICgtIHdlbGxFbmNZRGlmZikpKSAKCQkgICAgKHgyV2VsbENvb3JkOih5MldlbGxDb29yZCArIHdlbGxFbmNZRGlmZikpCgkJKQoJICAgICkKCSkgCgl3aGVuKGlkTGF5ZXIgCgkgICAgZm9yZWFjaChsYXllckluZm8gaWRMYXllcnNUYWJsZSAKCQkobGF5ZXJOYW1lID0gY2FyKGxheWVySW5mbykpIAoJCShsYXllckNvb3JkcyA9IGlkTGF5ZXJzQ29vcmRUYWJsZVtsYXllck5hbWVdKSAKCQkoZGJDcmVhdGVSZWN0IHRjQ2VsbFZpZXcgbGF5ZXJOYW1lIGxheWVyQ29vcmRzKQoJICAgICkKCSkKCXJldHVybih0KQogICAgKQopCgAA/////wAAAAAABAAAdgMAAAAAAAAAAAAAAAAAAG5mZXQAY2RiUmV2aXNpb24AX2RiTGFzdFNhdmVkQ291bnRlcgBlbmFibGVMT0QAZGlzY3JldGVXTHMAcGluIwBjbGFzc1BhcmFtZXRlcnMAc25hcEdyaWQAcG9seUltcFlFbmMAcG9seUltcFhFbmMAcG9seUltcGxhbnQASUxMaXN0AGRpZmZDb3JlSW1wRW5jAGRpZmZDb3JlSW1wbGFudABsYWJlbExheWVyAHdlbGxMYXllcldpZHRoAHdlbGxFbmNUYXAAd2VsbEVuY0RpZmYAd2VsbG1pbldpZHRoAHdlbGxMYXllcgBkaWZmTGF5ZXIAZ2F0ZUxheWVyAGRpZmZFeHQAbGFiZWxXaWR0aABkaWZmSW1wbGFudABkaWZmSW1wRW5jAHZpYTFNaW5TcGFjZQB2aWEyTWluU3BhY2UAbGF5ZXIyTWluU3BhY2UAbGF5ZXIzTWluU3BhY2UAaW1wbGFudAB0YXBMYXllcgB0YXBJbXBsYW50AHRhcEltcEVuYwBsb2RFbmFibGVkAGluc3RhbmNlc0xhc3RDaGFuZ2VkAHBhcmFtZXRlcnMAc291cmNlRmlyc3QAc2hhcmVkRHJhaW4AREZMMXNkMgBzaGFyZWRTb3VyY2UAbGFzdENvbnRhY3QAREZMMXNkAGZpcnN0Q29udGFjdABnYXRlRXh0AGlkTGF5ZXJzVGFibGUAc3JjU2VjSWRMYXllcnNUYWJsZQBkcm5TZWNJZExheWVyc1RhYmxlAGhzcGljZU1vZGVsAG5zaG9ydABzcmNPZmZzZXQAZHJuT2Zmc2V0AG0AbAB3AGdhdGV0b2dhdGVTcGFjaW5nAGdhdGVJbXBsYW50AG1hbnVhbExPRABzYQBzYgBzZABidXR0aW5nR2F0ZXNTQQBidXR0aW5nR2F0ZXNTQgBMT0RDb250YWN0TWFwU1N0cmFwcGVkAExPRENvbnRhY3RNYXBORFN0cmFwcGVkAG5vQ29udGFjdExPRAB2b2x0YWdlQ2hvaWNlcwBkAHMAZwBEAFMAc3ltYm9saWMAc2NzOGxzX2R2AGRpZmZJbXBDaG9pY2UAaW5XZWxsADYANQAyADEANAAzAHNocFBsY1N0YXR1cwBzaHBQaW5OYW1lAABzaHBBY2Nlc3NEaXIAY2RzU2tpbGxQY2VsbAAAAAAAAAAEAAAAAAAAANQAAAAAAAAACAAAAAcAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAABAAAAAAAAAQEAAAAAAAACAQAAAAAAANQAAAAAAAAA2AAAAAAAAADcAAAAAAAAAOAAAAAAAAAA5AAAAAAAAADwAAAAAAAAAAgBAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAMAAAAAAAAABgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABwAAAAAAAAD/////AAAAwAEBAQEBAQEAAAAAwAIAAAACAAoGDgYSBh4G2AMwBgAAAAAAAAQAAAAAAAAAzAIAAAAAAAAdAAAAEgAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAABAEAAAAAAAAAAwAAAAAAAAEDAAAAAAAAAgMAAAAAAAADAwAAAAAAAAABAAAAAAAAAwEAAAAAAAAGAwAAAAAAAAwDAAAAAAAAEgMAAAAAAAAKAwAAAAAAAA8DAAAAAAAAEAMAAAAAAAAEAwAAAAAAAMwCAAAAAAAA0AIAAAAAAADUAgAAAAAAANgCAAAAAAAA3AIAAAAAAAAgAwAAAAAAAKADAAAAAAAA5AMAAAAAAAAoBAAAAAAAAGwEAAAAAAAAcAQAAAAAAAD0BQAAAAAAAMAGAAAAAAAAjAcAAAAAAABwCwAAAAAAAPwMAAAAAAAAwA0AAAAAAACEDgAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAARAAAAAAAAACAAAAAAAAAAEQAAAAAAAAARAAAAAAAAABEAAAAAAAAAAQAAAAAAAAAhAEAAAAAAADMAAAAAAAAAMwAAAAAAAAA5AMAAAAAAACMAQAAAAAAAMQAAAAAAAAAxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA8AAAAAQAAAB8AAAAAAADAAQAAAAECAQABAgMBBAIDBQYHCAQFBgkKBwsMDQ4PAwgJEAQBAAUBAgMEEQoLDAUSEwIUFRYGBxcYGQMEDQ4aDwAAAMACAAAAJgAwADwAQQBRAFoAZgByAIUAlACkAK8AvgDJANUA4gDsAPYAAAEIARMBHwEqATcBRAFTAWIBagFzAX4BiAEAAKgBswG/AdMB4AHzAQACCAIWAioCPgJRAlsCZQJnAmkCawJ9AokCkwKWApkCnAKrAroC0QLpAvYCAAAAwAEAAAABAQEBBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQEhISEhISEhISEhISEhISEhISEhISEhISEhISEAAADAAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAMABAAAAIQACAx8ABgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHgQEPAAjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7pQAAAIQAAAABAAAAAgAAABgACAAAAAlAFgAGAAYABQAGAAUABQAGAAYABgAGAAUABQAFAAYABgAFAAYABgAGAAYABgAIAAUABQAGAAgAAIAJQBgABAAEAAQABAAGAAUABQAFAAQABgAGAAAABgAGAAYACAAIAAYABgAGAAAAAAAFAAUABgAFAAAAAAAAAAAAEAAAAAoAAAAAAQAAAAAAAAEBAAAAAAAAAgEAAAAAAAADAQAAAAAAAAUBAAAAAAAABgEAAAAAAAAHAQAAAAAAAAADAAAAAAAAAQMAAAAAAAACAwAAAAAAAA8AAAAAAAAADgAAAAAAAAANAAAAAAAAAAwAAAAAAAAACwAAAAAAAAAKAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAEAAAAAAAAAKQAAAAAAAAABgAAAAUAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAADAAAAAAAApAAAAAAAAACoAAAAAAAAAKwAAAAAAAAAsAAAAAAAAAC0AAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAD/////AAAAwAcAAAABAAAAAAAAAAAAAAAEAAAApAAAAAAAAAAGAAAABQAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAAAAMAAAAAAACkAAAAAAAAAKgAAAAAAAAArAAAAAAAAACwAAAAAAAAALQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABQAAAAAAAAD/////AAAAwAIAAADLAcsB7AHsAUoCAAAEAAAAAAAAALwAAAAAAAAABwAAAAYAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAADAAAAAAAAAQMAAAAAAAC8AAAAAAAAAMAAAAAAAAAAxAAAAAAAAADIAAAAAAAAAMwAAAAAAAAA5AAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAABgAAAAAAAAA/AIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAADwAAAAAAAAD/////AAAAwAEAAAB+fn5+fn5+fn5+fn5+fn4AAAAAwAIAAAABAAUACQAcACAAMwBGAFkAawB+AJcAsADJAFkBjQIAAAIAAAAFAAUAFAAFABQAFAAUABMAFAAaABoAGgCRADUBDAAAAAAEAACXAgAAAAAAAAAAAAAAAAAAbmlsAG5pbAAoInRleHQiICJkcmF3aW5nIikAbmlsACgiZGlmZiIgImRyYXdpbmciKQAoInBvbHkiICJkcmF3aW5nIikAKCJuc2RtIiAiZHJhd2luZyIpACgidGFwIiAiZHJhd2luZyIpACgicHNkbSIgImRyYXdpbmciKQAoKCJub25lIiAoMC4wIDAuMCAwLjApKSkAKCgibm9uZSIgKDAuMCAwLjAgMC4wKSkpACgoIm5vbmUiICgwLjAgMC4wIDAuMCkpKQAoKCJERlRQTDFzIiAiREZMMXNkMiIpICgiREZUUE0xcyIgIkRGTTFzZDIiKSAoImh2REZUUEwxcyIgImh2REZMMXNkMiIpICgiaHZERlRQTTFzIiAiaHZERk0xc2QyIikgKCJERlRQTDFzdyIgIkRGTDFzZDIiKSAoIkRGVFBNMXN3IiAiREZNMXNkMiIpKQAoKCJERkwxc2QiICJERkwxc2QyIikgKCJERkwxc2RmIiAiREZMMXNkMiIpICgiREZMMXNkMiIgIkRGTDFzZDIiKSAoIkRGTTFzZCIgIkRGTTFzZDIiKSAoIkRGTTFzZDIiICJERk0xc2QyIikgKCJodkRGTDFzZCIgImh2REZMMXNkMiIpICgiaHZERk0xc2QiICJodkRGTTFzZDIiKSAoImh2REZNMXNkMiIgImh2REZNMXNkMiIpICgiaHZERkwxc2QyIiAiaHZERkwxc2QyIikgKCJERlRQTTFzMiIgIkRGTTFzZCIpICgiREZUUEwxczIiICJERkwxc2QiKSAoImh2REZUUEwxczIiICJodkRGTDFzZCIpICgiaHZERlRQTTFzMiIgImh2REZNMXNkIikpACgibm9ybWFsIikAAGQAAAAEAAAApAAAAAAAAAAGAAAABQAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAAAAMAAAAAAACkAAAAAAAAAKgAAAAAAAAArAAAAAAAAACwAAAAAAAAALQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAADUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAGgAAAAAAAAD/////AAAAwHsUrkfhenQ/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQPzMzMzMzM8M/pHA9CtejwD/D9Shcj8LFP1K4HoXrUcg/w/UoXI/CxT/sUbgehevBP6RwPQrXo8A/pHA9CtejwD8AAAAAAAAAAAAAAAAAAAAAMzMzMzMzwz/hehSuR+HaP+F6FK5H4co/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0D8EAAAAAAAAAKQAAAAAAAAABgAAAAUAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAADAAAAAAAApAAAAAAAAACoAAAAAAAAAKwAAAAAAAAAsAAAAAAAAAC0AAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABwAAAAAAAAD/////AAAAwAEAAAAfAAAABAAAAKQAAAAAAAAABgAAAAUAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAADAAAAAAAApAAAAAAAAACoAAAAAAAAAKwAAAAAAAAAsAAAAAAAAAC0AAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAEAAAABAAAA/////wAAAMBeYZVLAAAAAAEAAAAAAAAABAAAAAAAAADMAgAAAAAAAB0AAAAYAAAAAQAAAAAAAAACAAAAAAAAAAMAAAAAAAAABAAAAAAAAAAEAQAAAAAAAAEDAAAAAAAAAgMAAAAAAAADAwAAAAAAAAQDAAAAAAAABQMAAAAAAAAGAwAAAAAAAAcDAAAAAAAACAMAAAAAAAAJAwAAAAAAAAoDAAAAAAAACwMAAAAAAAAMAwAAAAAAAA4DAAAAAAAAAAEAAAAAAAADAQAAAAAAAAEBAAAAAAAAEwMAAAAAAAAVAwAAAAAAABYDAAAAAAAAzAIAAAAAAADQAgAAAAAAANQCAAAAAAAA2AIAAAAAAADcAgAAAAAAAOQCAAAAAAAA8AIAAAAAAAD8AgAAAAAAAAQDAAAAAAAADAMAAAAAAAAUAwAAAAAAABgDAAAAAAAAHAMAAAAAAAAgAwAAAAAAADADAAAAAAAAOAMAAAAAAAA8AwAAAAAAAEADAAAAAAAASAMAAAAAAABMAwAAAAAAAEwFAAAAAAAAVAgAAAAAAAD/////////////////////BAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAQAAAAAAAAAAgAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAABAAAAAAAAAAAAgAAAAAAAAgDAAAAAAAAoAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAMAAAAAAAAA/////wAAAMAAAAAAAAAAwAEAAAABAgMAAAAAwAEAAAABAgMAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAgAAAAIAAAACAAAAAwAEAAAADBQcAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAADAAAAAAEoAAAAkAAAAAwAAAAIAAAABAAAAAQAAAG8AbwBvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAEwAAAAABAAAAAAAAAQEAAAAAAAACAQAAAAAAAAMBAAAAAAAABQEAAAAAAAAGAQAAAAAAAAcBAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAEDAAAAAAAAAgMAAAAAAAADAwAAAAAAAAQDAAAAAAAABQMAAAAAAAAGAwAAAAAAAAoDAAAAAAAACAMAAAAAAAAJAwAAAAAAAAcDAAAAAAAADwAAAAAAAAAOAAAAAAAAAA0AAAAAAAAADAAAAAAAAAALAAAAAAAAAAoAAAAAAAAACAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAABQAAAAAAAAAGAAAAAAAAAAcAAAAAAAAAEAAAAAAAAAAUAAAAAAAAABUAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAQAAAAAAAAAtAIAAAAAAAAcAAAAFAAAAAABAAAAAAAAAQAAAAAAAAACAAAAAAAAAAMAAAAAAAAABAAAAAAAAAACAQAAAAAAAAADAAAAAAAAAQMAAAAAAAACAwAAAAAAAAMDAAAAAAAABAMAAAAAAAAFAwAAAAAAAAYDAAAAAAAABwMAAAAAAAAIAwAAAAAAAAkDAAAAAAAACgMAAAAAAAALAwAAAAAAAAwDAAAAAAAADQMAAAAAAAC0AgAAAAAAAAAAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAUAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAgAAAAAAAAACQAAAAAAAAAKAAAAAAAAAAsAAAAAAAAADAAAAAAAAAANAAAAAAAAAA4AAAAAAAAADwAAAAAAAAAQAAAAAAAAABEAAAAAAAAAEgAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAIAAAAAAAAAAAAAAD/////AAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACABAAAAAAAAAB8AQAAAAAAAA8AAAAGAAAAAQAAAAAAAAACAAAAAAAAAAMAAAAAAAAABAAAAAAAAAAFAwAAAAAAAAYDAAAAAAAAfAEAAAAAAACAAQAAAAAAAIQBAAAAAAAAiAEAAAAAAACMAQAAAAAAAJQBAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAMAAAAAAAAA/////wAAAMAAAAAAAAAAwAAAAAAEAAAAAAAAAGwCAAAAAAAAGQAAABEAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAQBAAAAAAAAAAMAAAAAAAABAwAAAAAAAAIDAAAAAAAAAwMAAAAAAAAFAwAAAAAAAAYDAAAAAAAABwMAAAAAAAAIAwAAAAAAAAkDAAAAAAAAEAMAAAAAAAAAAQAAAAAAAAMBAAAAAAAAbAIAAAAAAABwAgAAAAAAAHQCAAAAAAAAeAIAAAAAAAB8AgAAAAAAAIQCAAAAAAAAlAIAAAAAAACgAgAAAAAAAKgCAAAAAAAAtAIAAAAAAAC8AgAAAAAAAMACAAAAAAAAxAIAAAAAAADIAgAAAAAAAMwCAAAAAAAA0AIAAAAAAADUAgAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAQAAAAAAAAAAwAAAAAAAAACAAAAAAAAAAMAAAAAAAAAAgAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAA4AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAwAAAAAAAAD/////AAAAwAAAAAAAAADAAQAAAAMFBwAAAAAAAAAAwAEAAAABAgMAAAAAwAAAAAAAAADAAQAAAAcCBAAAAADAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACQYgAAABwAAAACAAAAAgAAAAEAAAAjACMAAwAAAPDw8AAAAAAAAAAAAAAAAAAYAAAAEgAAAAABAAAAAAAAAQEAAAAAAAACAQAAAAAAAAMBAAAAAAAABQEAAAAAAAAGAQAAAAAAAAcBAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAEDAAAAAAAAAgMAAAAAAAADAwAAAAAAAAQDAAAAAAAABQMAAAAAAAAGAwAAAAAAAAcDAAAAAAAACAMAAAAAAAAJAwAAAAAAAA8AAAAAAAAADgAAAAAAAAANAAAAAAAAAAwAAAAAAAAACwAAAAAAAAAKAAAAAAAAAAgAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABAAAAAAAAAAHAAAAAAAAABAAAAAAAAAAEwAAAAAAAAAUAAAAAAAAABUAAAAAAAAAFgAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAPAIAAAAAAAAXAAAAFAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAABAEAAAAAAAAAAwAAAAAAAAEDAAAAAAAAAgMAAAAAAAADAwAAAAAAAAQDAAAAAAAABQMAAAAAAAAGAwAAAAAAAAcDAAAAAAAACAMAAAAAAAAJAwAAAAAAAAoDAAAAAAAACwMAAAAAAAAAAQAAAAAAAAMBAAAAAAAADAMAAAAAAAA8AgAAAAAAAEACAAAAAAAARAIAAAAAAABIAgAAAAAAAEwCAAAAAAAAVAIAAAAAAABgAgAAAAAAAGgCAAAAAAAAcAIAAAAAAAB0AgAAAAAAAHgCAAAAAAAAfAIAAAAAAACAAgAAAAAAAIQCAAAAAAAAiAIAAAAAAACMAgAAAAAAAJACAAAAAAAAlAIAAAAAAACYAgAAAAAAANwDAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAARAEAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAP////8AAADAAAAAAAAAAMABAAAAAQAAAAAAAMAAAAAAAAAAwAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIADAAAAEAAAAAEAAAACAAAADgAAAAAAAAAAAAAAAAAAABAAAAAMAAAAAAEAAAAAAAABAQAAAAAAAAIBAAAAAAAAAwEAAAAAAAAFAQAAAAAAAAYBAAAAAAAABwEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAQMAAAAAAAACAwAAAAAAAAMDAAAAAAAADwAAAAAAAAAOAAAAAAAAAA0AAAAAAAAADAAAAAAAAAALAAAAAAAAAAoAAAAAAAAACAAAAAAAAAAJAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAPQBAAAAAAAAFAAAAAwAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAQBAAAAAAAAAAMAAAAAAAABAwAAAAAAAAIDAAAAAAAACAMAAAAAAAAJAwAAAAAAAAABAAAAAAAAAwEAAAAAAAD0AQAAAAAAAPgBAAAAAAAA/AEAAAAAAAAAAgAAAAAAAAQCAAAAAAAADAIAAAAAAAAcAgAAAAAAACwCAAAAAAAAPAIAAAAAAABMAgAAAAAAALACAAAAAAAAtAIAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAABkAAAAAAAAAAQAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABgAAAAAAAAD/////AAAAwAAAAAAAAADAAQAAAAXnAx8XAgAAAAAAwAEAAAAUFBQUFBQAAAAAAMABAAAABAMEBQMBAAAAAADAAQAAAAECAwQFBgAAAAAAwAAAAAB+////lgAAACYCAAAs////+P///3EBAADdAAAABv///wAAAACQAQAApAEAAAb///9+////kAEAACYCAAAf////7P///3cBAAA2AQAA////f////38AAACAAAAAgFUAAAAYAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAJAAAAAAEAAAAAAAABAQAAAAAAAAIBAAAAAAAAAwEAAAAAAAAFAQAAAAAAAAYBAAAAAAAABwEAAAAAAAAAAgAAAAAAAAADAAAAAAAADwAAAAAAAAAOAAAAAAAAAA0AAAAAAAAADAAAAAAAAAALAAAAAAAAAAoAAAAAAAAACAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAADMAgAAAAAAAB0AAAATAAAAAQAAAAAAAAACAAAAAAAAAAMAAAAAAAAABAAAAAAAAAAEAQAAAAAAAAADAAAAAAAAAQMAAAAAAAACAwAAAAAAAAMDAAAAAAAABAMAAAAAAAALAwAAAAAAAAwDAAAAAAAADQMAAAAAAAAPAwAAAAAAABADAAAAAAAAEQMAAAAAAAAUAwAAAAAAAAABAAAAAAAAAwEAAAAAAADMAgAAAAAAANACAAAAAAAA1AIAAAAAAADYAgAAAAAAANwCAAAAAAAA5AIAAAAAAAD0AgAAAAAAAAQDAAAAAAAAFAMAAAAAAAAkAwAAAAAAADQDAAAAAAAARAMAAAAAAABUAwAAAAAAAGQDAAAAAAAAyAMAAAAAAAAsBAAAAAAAAJAEAAAAAAAAmAQAAAAAAACcBAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAZAAAAAAAAABkAAAAAAAAAGQAAAAAAAAACAAAAAAAAAAEAAAAAAAAADABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAYAAAAAAAAA/////wAAAMAAAAAAAAAAwAEAAAAF5wMfFwIAAAAAAMABAAAAAQEBAQEBAAAAAADAAQAAAAEBAQEBAQAAAAAAwAEAAAABAQEBAQEAAAAAAMABAAAAAQEBAQEBAAAAAADAAQAAAAICAgICAgAAAAAAwAEAAAABAQEBAQEAAAAAAMABAAAAAQEBAQEBAAAAAADA////f////38AAACAAAAAgP///3////9/AAAAgAAAAID///9/////fwAAAIAAAACA////f////38AAACAAAAAgP///3////9/AAAAgAAAAID///9/////fwAAAIAAAACAAAAAwP///3////9/AAAAgAAAAID///9/////fwAAAIAAAACA////f////38AAACAAAAAgP///3////9/AAAAgAAAAID///9/////fwAAAIAAAACA////f////38AAACAAAAAgAAAAMD///9/////fwAAAIAAAACA////f////38AAACAAAAAgP///3////9/AAAAgAAAAID///9/////fwAAAIAAAACA////f////38AAACAAAAAgP///3////9/AAAAgAAAAIAAAADAAAAAAFUAAAAYAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAALAAAAAAEAAAAAAAABAQAAAAAAAAIBAAAAAAAAAwEAAAAAAAAFAQAAAAAAAAYBAAAAAAAABwEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAQMAAAAAAAACAwAAAAAAAA8AAAAAAAAADgAAAAAAAAANAAAAAAAAAAwAAAAAAAAACwAAAAAAAAAKAAAAAAAAAAgAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAABEAwAAAAAAACIAAAANAAAAAQAAAAAAAAACAAAAAAAAAAMAAAAAAAAABAAAAAAAAAAEAQAAAAAAAAADAAAAAAAAAgMAAAAAAAAEAwAAAAAAAAABAAAAAAAAAwEAAAAAAAACAQAAAAAAAA4DAAAAAAAABQMAAAAAAABEAwAAAAAAAEgDAAAAAAAATAMAAAAAAABQAwAAAAAAAFQDAAAAAAAAbAMAAAAAAACEAwAAAAAAAJwDAAAAAAAAgAQAAAAAAACEBAAAAAAAANwFAAAAAAAAHAgAAAAAAAAUCgAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAA5AAAAAAAAAAEAAAAAAAAAFgBAAAAAAAAQAIAAAAAAAD4AQAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA4AAAAAAAAA/////wAAAMABAAAAAAAAAQIAAAAAAAAAAAAAAAAAAMABAAAABAQDAAAHAAIAAAAABwIAAAAAAMABAAAAAQEBAgIDAwMEBAQEBQUAAAAAAMAAAAAAfv///5YAAAAAAAAAAAAAAKQBAACWAAAAJgIAAAAAAAB+////lgAAACYCAADTAAAA+P///3EBAADdAAAALP////j///+8////3QAAAJYAAAAAAAAAkAEAAKQBAAAAAAAAAAAAAJYAAACkAQAABv///wAAAAAAAAAApAEAAJYAAAB+////kAEAACYCAACc////fv///5YAAAAmAgAAAAAAAH7///+WAAAAJgIAAAb///9+////AAAAACYCAADNAAAA7P///3cBAAA2AQAAH////+z////J////NgEAAJ0AAAAoAAAAAQAAAAIAAABoAGgAKAAJAAkAaAAIAGgACAAIAAgACABoAGgAAAAAAAAAAAAQAAAADAAAAAABAAAAAAAAAQEAAAAAAAACAQAAAAAAAAMBAAAAAAAABQEAAAAAAAAGAQAAAAAAAAcBAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAEDAAAAAAAAAgMAAAAAAAADAwAAAAAAAA8AAAAAAAAADgAAAAAAAAANAAAAAAAAAAwAAAAAAAAACwAAAAAAAAAKAAAAAAAAAAgAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABQAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAATAEAAAAAAAANAAAACwAAAAACAAAAAAAAAAEAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAIBAAAAAAAAAgIAAAAAAABCAwAAAAAAgE8DAAAAAACAWwMAAAAAAIBMAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAABwAAAAAAAAAIAAAAAAAAABIAAAAAAAAAHQAAAAAAAAAUAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAEAAAAAAAAACgAAAAAAAAALAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAABCAwAAAAAAABoAAAAQAAAAAQAAAP////9PAwAAAAAAABoAAAASAAAAAQAAAAAAAAAAAAAAWwMAAAAAAAAaAAAAEAAAAAEAAAD/////AQAAABAAAAAAAAAAAAAAAP////8AAADAAgAAAKMwAAAAAACAAAAAwAYAAAAIAAAAAAAAAAEAAAAGDQgOAQIAAAEAAAABAQEBAQEAAAAAAMAGAAAACAAAAAAAAAABAAAABg0IDgECAAACAAAANwM5AzsDPQM/A0EDAAAAwAYAAAAIAAAAAAAAAAEAAAAGDQgOAQIAAAEAAAAMDAgIAwIAAAQAAAAAAAAANAEAAAAAAAAMAAAACwAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAAAgMAAAAAAAADAwAAAAAAAAQDAAAAAAAABQMAAAAAAAAGAwAAAAAAAAcDAAAAAAAAAAMAAAAAAAA0AQAAAAAAADgBAAAAAAAAPAEAAAAAAABAAQAAAAAAAEQBAAAAAAAAUAEAAAAAAABcAQAAAAAAAHABAAAAAAAAeAEAAAAAAACAAQAAAAAAAIgBAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAACAAAAAAAAAP////8AAADAAgAAAAsDDQMAAADAAQAAAJeXAAAAAADAIgEAAJEAAAB0////kQAAAAAAAMAEBAAAAAAAwAAAAAAAAADAAwMAABAAAAABAAAAAQAAAAYGAAAAAAAAAAAAAAAAAAAIAAAAAwAAAAADAAAAAAAAAQMAAAAAAAACAwAAAAAAAAAAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAB8AQAAAAAAAA8AAAAMAAAAAQAAAAAAAAACAAAAAAAAAAMAAAAAAAAABAAAAAAAAAAEAQAAAAAAAAADAAAAAAAAAQMAAAAAAAACAwAAAAAAAAMDAAAAAAAAAAEAAAAAAAADAQAAAAAAAAUDAAAAAAAAfAEAAAAAAACAAQAAAAAAAIQBAAAAAAAAiAEAAAAAAACMAQAAAAAAAJQBAAAAAAAArAEAAAAAAAC8AQAAAAAAAAACAAAAAAAACAIAAAAAAAAMAgAAAAAAAGQDAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAEAAAAAAAAABEAAAAAAAAAAgAAAAAAAAABAAAAAAAAABYAQAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAcAAAAEAAAABQAAAAAAAMAAAAAAAAAAwAIAAABtBnUGdQZ9Bn0GgQZtBgAAAAAAwAEAAAAAAgEDAwUBAAAAAMAMAAAABgAAAAEAAAABCQMLBQYHAAEAAAABAwEDAQEDAAEAAAAGDQgOAQIGDQgOAQIBAAAAGxsbGxsbGxsbGxsbAAAAwAAAAACiAAAAKAAAAAIAAAACAAAAAQAAAACABwAAgAMAAIAAgAsAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAwAAAAAAQAAAAAAAAEBAAAAAAAAAgEAAAAAAAADAQAAAAAAAAUBAAAAAAAABgEAAAAAAAAHAQAAAAAAAAACAAAAAAAAAAMAAAAAAAABAwAAAAAAAAIDAAAAAAAAAwMAAAAAAAAPAAAAAAAAAA4AAAAAAAAADQAAAAAAAAAMAAAAAAAAAAsAAAAAAAAACgAAAAAAAAAIAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAcAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAIAAAAAAAAVAAAAEAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAABAEAAAAAAAAAAwAAAAAAAAEDAAAAAAAAAgMAAAAAAAAAAQAAAAAAAAMBAAAAAAAABAMAAAAAAAAFAwAAAAAAAAoDAAAAAAAABwMAAAAAAAAIAwAAAAAAAAMDAAAAAAAADAIAAAAAAAAQAgAAAAAAABQCAAAAAAAAGAIAAAAAAAAcAgAAAAAAAEgCAAAAAAAAmAIAAAAAAADEAgAAAAAAAPACAAAAAAAA9AIAAAAAAABMBAAAAAAAABwFAAAAAAAA6AUAAAAAAAAUCQAAAAAAADAKAAAAAAAA9AoAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAACwAAAAAAAAAUAAAAAAAAAAsAAAAAAAAACwAAAAAAAAABAAAAAAAAABYAQAAAAAAANAAAAAAAAAAzAAAAAAAAAAsAwAAAAAAABwBAAAAAAAAxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAjAAAAAAAAAP////8AAADAAQAAAAEBAQICAgMEAQUBAgMEAwIDBAUEBQMGBwgGBwkKCwQFBQYMAAAAAMACAAAAIgNpAjADYgEiA2kCMANiAfYCswG/AdMB4AHzAQACCAIWAioCPgJRAlsCZQJnAmkCawJ9AokCkwKWApkCnAKrAroC0QLpAgAAAAAAwAEAAAABAQEBAgICAlNTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUwAAAADAAQAAAAABAgMABQYHAAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiAFUAAABUAAAAAQAAAAIAAAAgACQAJQAlACAAZAAlACUAMwA1ADIAMgAyADIANAAzADMAMwAyADQANAAwADQANAA0ADUANQA0ADQANAAwADAAMwAzADQAAAAAAAAAAAAAAAAAAAAQAAAACgAAAAABAAAAAAAAAQEAAAAAAAACAQAAAAAAAAMBAAAAAAAABQEAAAAAAAAGAQAAAAAAAAcBAAAAAAAAAAMAAAAAAAABAwAAAAAAAAIDAAAAAAAADwAAAAAAAAAOAAAAAAAAAA0AAAAAAAAADAAAAAAAAAALAAAAAAAAAAoAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAApAAAAAAAAAAGAAAABQAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAAAAMAAAAAAACkAAAAAAAAAKgAAAAAAAAArAAAAAAAAACwAAAAAAAAALQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAFAAAAAAAAAP////8AAADAAAAAAAAAAAABAAAAAAAAAAAAAAAEAAAAAAAAAKQAAAAAAAAABgAAAAUAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAADAAAAAAAApAAAAAAAAACoAAAAAAAAAKwAAAAAAAAAsAAAAAAAAAC0AAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABQAAAAAAAAD/////AAAAwAIAAADLAcsB7AHsAUoCAAAEAAAAvAAAAAAAAAAHAAAABgAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAAAAMAAAAAAAABAwAAAAAAALwAAAAAAAAAwAAAAAAAAADEAAAAAAAAAMgAAAAAAAAAzAAAAAAAAADcAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAEAAAAAAAAABMAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABgAAAAAAAAD/////AAAAwAEAAAB+fn5+fn4AAAAAAMABAAAAAQsjO1PiAAACAAAACwAZABkAGQCQADQBAAQAABQCAAAAAAAAAAAAAAAAAAAoIm5vcm1hbCIpKCgibm9uZSIgKDAuMCAwLjAgMC4wKSkpKCgibm9uZSIgKDAuMCAwLjAgMC4wKSkpKCgibm9uZSIgKDAuMCAwLjAgMC4wKSkpKCgiREZUUEwxcyIgIkRGTDFzZDIiKSAoIkRGVFBNMXMiICJERk0xc2QyIikgKCJodkRGVFBMMXMiICJodkRGTDFzZDIiKSAoImh2REZUUE0xcyIgImh2REZNMXNkMiIpICgiREZUUEwxc3ciICJERkwxc2QyIikgKCJERlRQTTFzdyIgIkRGTTFzZDIiKSkoKCJERkwxc2QiICJERkwxc2QyIikgKCJERkwxc2RmIiAiREZMMXNkMiIpICgiREZMMXNkMiIgIkRGTDFzZDIiKSAoIkRGTTFzZCIgIkRGTTFzZDIiKSAoIkRGTTFzZDIiICJERk0xc2QyIikgKCJodkRGTDFzZCIgImh2REZMMXNkMiIpICgiaHZERk0xc2QiICJodkRGTTFzZDIiKSAoImh2REZNMXNkMiIgImh2REZNMXNkMiIpICgiaHZERkwxc2QyIiAiaHZERkwxc2QyIikgKCJERlRQTTFzMiIgIkRGTTFzZCIpICgiREZUUEwxczIiICJERkwxc2QiKSAoImh2REZUUEwxczIiICJodkRGTDFzZCIpICgiaHZERlRQTTFzMiIgImh2REZNMXNkIikpZAAAAAQAAAAAAAAApAAAAAAAAAAGAAAABQAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAAAAMAAAAAAACkAAAAAAAAAKgAAAAAAAAArAAAAAAAAACwAAAAAAAAALQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAMAAAAAAAAAP////8AAADAkML1KFyP0j/hehSuR+HaP6RwPQrXo8A/AAAAAAAAAAAAAAAAAAAAADMzMzMzM8M/4XoUrkfh2j/hehSuR+HKPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANA/BAAAAKQAAAAAAAAABgAAAAUAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAADAAAAAAAApAAAAAAAAACoAAAAAAAAAKwAAAAAAAAAsAAAAAAAAAC0AAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAcAAAAAAAAA/////wAAAMABAAAAGgAAACIAAAAAAAAABAAAAAAAAADkAgAAAAAAAB4AAAAUAAAAAQAAAAAAAAACAAAAAAAAAAMAAAAAAAAABAAAAAAAAAAEAQAAAAAAAAMEAAAAAAAAAAQAAAAAAAABBAAAAAAAAAIEAAAAAAAABAQAAAAAAAAFBAAAAAAAAAYEAAAAAAAABwQAAAAAAAAIBAAAAAAAAAkEAAAAAAAAAQUAAAAAAAACBQAAAAAAAAYFAAAAAAAAAAEAAAAAAAADAQAAAAAAAOQCAAAAAAAA6AIAAAAAAADsAgAAAAAAAPACAAAAAAAA9AIAAAAAAAD8AgAAAAAAAAgDAAAAAAAAFAMAAAAAAAAgAwAAAAAAACwDAAAAAAAAOAMAAAAAAABEAwAAAAAAAFADAAAAAAAAXAMAAAAAAACAAwAAAAAAAKQDAAAAAAAAsAMAAAAAAAC8AwAAAAAAAMgDAAAAAAAAzAMAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAACQAAAAAAAAAJAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAEAAAAAAAAAKABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAIAAAAAAAAA/////wAAAMAAAAAAAAAAwAIAAADsAewBAAAAwAEAAAAHBwAAAAAAwAEAAAAGBgAAAAAAwAEAAAAFBQAAAAAAwAEAAAABAQAAAAAAwAEAAAACAAAAAAAAwAEAAAAFBQAAAAAAwAEAAAAECAAAAAAAwP///3////9/AAAAgAAAAIB+////fv///4sBAACkAQAAAAAAwP///3////9/AAAAgAAAAIB1/v//fv///yECAACkAQAAAAAAwAEAAAABAwAAAAAAwAEAAAABAQAAAAAAwAEAAAABAQAAVQAAABAAAAABAAAAAgAAAIkAkQAAAAAAAAAAABAAAAAQAAAAAAEAAAAAAAABAQAAAAAAAAIBAAAAAAAAAwEAAAAAAAAFAQAAAAAAAAYBAAAAAAAABwEAAAAAAAAAAgAAAAAAAAAEAAAAAAAAAQQAAAAAAAACBAAAAAAAAAMEAAAAAAAABAQAAAAAAAAFBAAAAAAAAAYEAAAAAAAAAAUAAAAAAAAPAAAAAAAAAA4AAAAAAAAADQAAAAAAAAAMAAAAAAAAAAsAAAAAAAAACgAAAAAAAAAIAAAAAAAAAAkAAAAAAAAABwAAAAAAAAAGAAAAAAAAAAUAAAAAAAAABAAAAAAAAAADAAAAAAAAAAIAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAABMAQAAAAAAAA0AAAAKAAAAAQAAAAAAAAACAAAAAAAAAAMAAAAAAAAABAAAAAAAAAAEAQAAAAAAAAADAAAAAAAAAQMAAAAAAAACAwAAAAAAAAABAAAAAAAAAwEAAAAAAABMAQAAAAAAAFABAAAAAAAAVAEAAAAAAABYAQAAAAAAAFwBAAAAAAAAZAEAAAAAAABsAQAAAAAAAHwBAAAAAAAAkAEAAAAAAACUAQAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAIAAAAAAAAABAAAAAAAAAAFAAAAAAAAAAEAAAAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAA/////wAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwHX+//9+////IQIAACYCAAABAAAAEAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAEAAAAAoAAAAAAQAAAAAAAAEBAAAAAAAAAgEAAAAAAAADAQAAAAAAAAUBAAAAAAAABgEAAAAAAAAHAQAAAAAAAAACAAAAAAAAAAMAAAAAAAABAwAAAAAAAA8AAAAAAAAADgAAAAAAAAANAAAAAAAAAAwAAAAAAAAACwAAAAAAAAAKAAAAAAAAAAgAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAEAAAAAAAAACQCAAAAAAAAFgAAABEAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAQBAAAAAAAAAAMAAAAAAAABAwAAAAAAAAYDAAAAAAAAAgMAAAAAAAADAwAAAAAAAAQDAAAAAAAABQMAAAAAAAAHAwAAAAAAAAABAAAAAAAAAwEAAAAAAAAJAwAAAAAAAAoDAAAAAAAAJAIAAAAAAAAoAgAAAAAAACwCAAAAAAAAMAIAAAAAAAA0AgAAAAAAADwCAAAAAAAASAIAAAAAAABYAgAAAAAAAGQCAAAAAAAAaAIAAAAAAABsAgAAAAAAAHACAAAAAAAAdAIAAAAAAAB4AgAAAAAAAHwCAAAAAAAApAMAAAAAAACoAwAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAMAAAAAAAAABAAAAAAAAAADAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAoAQAAAAAAAAQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAD/////AAAAwAAAAAAAAADAAQAAAAEAAAAAAADAAQAAAAEAAAAAAAAAAAAAwAEAAAAHAAAAAAAAgAAAAIAAAACAAAAAgAAAAIACAAAAEAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAEAAAAAsAAAAAAQAAAAAAAAEBAAAAAAAAAgEAAAAAAAADAQAAAAAAAAUBAAAAAAAABgEAAAAAAAAHAQAAAAAAAAACAAAAAAAAAAMAAAAAAAABAwAAAAAAAAIDAAAAAAAADwAAAAAAAAAOAAAAAAAAAA0AAAAAAAAADAAAAAAAAAALAAAAAAAAAAoAAAAAAAAACAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAlAEAAAAAAAAQAAAACwAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAABAEAAAAAAAAAAwAAAAAAAAEDAAAAAAAAAQQAAAAAAAACBAAAAAAAAAABAAAAAAAAAwEAAAAAAACUAQAAAAAAAJgBAAAAAAAAnAEAAAAAAACgAQAAAAAAAKQBAAAAAAAArAEAAAAAAAC4AQAAAAAAAMwBAAAAAAAA1AEAAAAAAADcAQAAAAAAAOABAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAABAAAAAAAAACsAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAACAAAAAAAAAP////8AAADAAAAAAAAAAMABAAAAAgIAAAAAAMCWAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAFcAAAAYAAAAAgAAAAIAAAABAAAAAQBBAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAABAAAAAAAAAQEAAAAAAAACAQAAAAAAAAMBAAAAAAAABQEAAAAAAAAGAQAAAAAAAAcBAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAQQAAAAAAAACBAAAAAAAAAMEAAAAAAAABAQAAAAAAAAFBAAAAAAAAAYEAAAAAAAADwAAAAAAAAAOAAAAAAAAAA0AAAAAAAAADAAAAAAAAAALAAAAAAAAAAoAAAAAAAAACAAAAAAAAAAJAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAEAAAAAAAAAARAAAAAAAAABMAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAGdFIwE=