PD9waHANCi8qKg0KICogQnJpY2tzIENoaWxkIFRoZW1lIOKAlCBCU1AgZnVuY3Rpb25zDQogKiBIb3VzZXM6IGVucXVldWUgcGFyZW50ICsgY2hpbGQgc3R5bGVzLCBmb3JjZS1yZW5kZXIgZm9vdGVyICgxMDYpICsgaGVhZGVyICgxMDUpDQogKiB3aXRoIEJyaWNrcyBDU1MgZ2VuICsgY29tcHV0ZWQgb3ZlcnJpZGVzIChmaXhlcyBCcmlja3MgMi4zLjIgQXJyYXkgYnVnKS4NCiAqLw0KDQppZiAoIWRlZmluZWQoJ0FCU1BBVEgnKSkgZXhpdDsNCg0KLyoqIEVucXVldWUgY2hpbGQgc3R5bGVzaGVldCArIGZvcmNlIEJyaWNrcyBmcm9udGVuZCBKUyAoZm9yIG5hdi1uZXN0ZWQgaGFtYnVyZ2VyIGluaXQpLg0KICogIEFwciAxNzogQnJpY2tzIGZyb250ZW5kIHNjcmlwdCBpc24ndCBhdXRvLWVucXVldWVkIG9uIG91ciBmb3JjZS1yZW5kZXJlZCBoZWFkZXI7DQogKiAgbmF2LW5lc3RlZCArIHRvZ2dsZSBuZWVkIGJyaWNrcy1zY3JpcHRzIHRvIGluaXQuIEZvcmNlLWVucXVldWUgaGVyZS4gKi8NCmFkZF9hY3Rpb24oJ3dwX2VucXVldWVfc2NyaXB0cycsIGZ1bmN0aW9uKCkgew0KICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2JyaWNrc19pc19idWlsZGVyX21haW4nKSAmJiBicmlja3NfaXNfYnVpbGRlcl9tYWluKCkpIHJldHVybjsNCiAgICAkY3NzX3BhdGggPSBnZXRfc3R5bGVzaGVldF9kaXJlY3RvcnkoKSAuICcvc3R5bGUuY3NzJzsNCiAgICAkdmVyID0gZmlsZV9leGlzdHMoJGNzc19wYXRoKSA/IGZpbGVtdGltZSgkY3NzX3BhdGgpIDogJzEuMC4wJzsNCiAgICB3cF9lbnF1ZXVlX3N0eWxlKCdicmlja3MtY2hpbGQnLCBnZXRfc3R5bGVzaGVldF91cmkoKSwgWydicmlja3MtZnJvbnRlbmQnXSwgJHZlcik7DQogICAgLy8gRm9yY2UgQnJpY2tzIGZyb250ZW5kIEpTIOKAlCBuZWVkZWQgZm9yIE5hdiBOZXN0YWJsZSBoYW1idXJnZXIgdG9nZ2xlLCBBY2NvcmRpb24sIGV0Yy4NCiAgICBpZiAod3Bfc2NyaXB0X2lzKCdicmlja3Mtc2NyaXB0cycsICdyZWdpc3RlcmVkJykgJiYgIXdwX3NjcmlwdF9pcygnYnJpY2tzLXNjcmlwdHMnLCAnZW5xdWV1ZWQnKSkgew0KICAgICAgICB3cF9lbnF1ZXVlX3NjcmlwdCgnYnJpY2tzLXNjcmlwdHMnKTsNCiAgICB9DQp9LCAyMCk7DQoNCi8qKiBIZWxwZXJzIOKAlCBzZWxmLWNvbnRhaW5lZCB0byBhdm9pZCBjcm9zcy1maWxlIGZ1bmN0aW9uLXNjb3BlIGlzc3VlcyAqLw0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2JzcF91dl90b19jc3MnKSkgew0KICAgIGZ1bmN0aW9uIGJzcF91dl90b19jc3MoJHgpIHsNCiAgICAgICAgaWYgKGlzX2FycmF5KCR4KSAmJiBpc3NldCgkeFsndW5pdCddKSAmJiBpc3NldCgkeFsndmFsdWUnXSkpIHsNCiAgICAgICAgICAgIGlmICgkeFsndW5pdCddID09PSAnYXV0bycpIHJldHVybiAnYXV0byc7DQogICAgICAgICAgICByZXR1cm4gJHhbJ3ZhbHVlJ10gLiAkeFsndW5pdCddOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiBpc19zY2FsYXIoJHgpID8gKHN0cmluZykkeCA6ICcnOw0KICAgIH0NCiAgICBmdW5jdGlvbiBic3BfZWxlbWVudF9ydWxlKCRlbCkgew0KICAgICAgICBpZiAoIWlzX2FycmF5KCRlbCkgfHwgIWlzc2V0KCRlbFsnaWQnXSkpIHJldHVybiAnJzsNCiAgICAgICAgJGlkID0gJGVsWydpZCddOyAkcyA9ICRlbFsnc2V0dGluZ3MnXSA/PyBbXTsgJGRlY2xzID0gW107DQogICAgICAgIGZvcmVhY2ggKFsnX3dpZHRoJz0+J3dpZHRoJywnX2hlaWdodCc9PidoZWlnaHQnXSBhcyAkaz0+JHApIHsNCiAgICAgICAgICAgIGlmIChpc3NldCgkc1ska10pKSB7ICR2ID0gYnNwX3V2X3RvX2Nzcygkc1ska10pOyBpZiAoJHYpICRkZWNsc1tdID0gIiRwOiAkdiI7IH0NCiAgICAgICAgfQ0KICAgICAgICBpZiAoaXNzZXQoJHNbJ19wYWRkaW5nJ10pICYmIGlzX2FycmF5KCRzWydfcGFkZGluZyddKSkgew0KICAgICAgICAgICAgJHAgPSAkc1snX3BhZGRpbmcnXTsgJHNkID0gW107DQogICAgICAgICAgICBmb3JlYWNoIChbJ3RvcCcsJ3JpZ2h0JywnYm90dG9tJywnbGVmdCddIGFzICRzaWRlKSB7DQogICAgICAgICAgICAgICAgJHZhbCA9ICRwWyRzaWRlXSA/PyAwOw0KICAgICAgICAgICAgICAgICRzZFskc2lkZV0gPSBpc19hcnJheSgkdmFsKSA/IGJzcF91dl90b19jc3MoJHZhbCkgOiAoc3RyaW5nKSR2YWw7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkZGVjbHNbXSA9ICJwYWRkaW5nOiB7JHNkWyd0b3AnXX0geyRzZFsncmlnaHQnXX0geyRzZFsnYm90dG9tJ119IHskc2RbJ2xlZnQnXX0iOw0KICAgICAgICB9DQogICAgICAgIGlmIChpc3NldCgkc1snX21hcmdpbiddKSAmJiBpc19hcnJheSgkc1snX21hcmdpbiddKSkgew0KICAgICAgICAgICAgJG0gPSAkc1snX21hcmdpbiddOyAkc2QgPSBbXTsNCiAgICAgICAgICAgIGZvcmVhY2ggKFsndG9wJywncmlnaHQnLCdib3R0b20nLCdsZWZ0J10gYXMgJHNpZGUpIHsNCiAgICAgICAgICAgICAgICAkdmFsID0gJG1bJHNpZGVdID8/IDA7DQogICAgICAgICAgICAgICAgJHNkWyRzaWRlXSA9IGlzX2FycmF5KCR2YWwpID8gYnNwX3V2X3RvX2NzcygkdmFsKSA6IChzdHJpbmcpJHZhbDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRkZWNsc1tdID0gIm1hcmdpbjogeyRzZFsndG9wJ119IHskc2RbJ3JpZ2h0J119IHskc2RbJ2JvdHRvbSddfSB7JHNkWydsZWZ0J119IjsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoaXNzZXQoJHNbJ19yb3dHYXAnXSkpICAgICRkZWNsc1tdID0gJ3Jvdy1nYXA6ICcgLiBic3BfdXZfdG9fY3NzKCRzWydfcm93R2FwJ10pOw0KICAgICAgICBpZiAoaXNzZXQoJHNbJ19jb2x1bW5HYXAnXSkpICRkZWNsc1tdID0gJ2NvbHVtbi1nYXA6ICcgLiBic3BfdXZfdG9fY3NzKCRzWydfY29sdW1uR2FwJ10pOw0KICAgICAgICBpZiAoaXNzZXQoJHNbJ19nYXAnXSkpICAgICAgICRkZWNsc1tdID0gJ2dhcDogJyAuIGJzcF91dl90b19jc3MoJHNbJ19nYXAnXSk7DQogICAgICAgIGlmIChpc3NldCgkc1snX2JvcmRlciddWydyYWRpdXMnXSkgJiYgaXNfYXJyYXkoJHNbJ19ib3JkZXInXVsncmFkaXVzJ10pKSB7DQogICAgICAgICAgICAkciA9ICRzWydfYm9yZGVyJ11bJ3JhZGl1cyddOyAkYyA9IFtdOw0KICAgICAgICAgICAgZm9yZWFjaCAoWyd0b3AnLCdyaWdodCcsJ2JvdHRvbScsJ2xlZnQnXSBhcyAkc2lkZSkgew0KICAgICAgICAgICAgICAgICR2ID0gJHJbJHNpZGVdID8/IDA7DQogICAgICAgICAgICAgICAgJGNbJHNpZGVdID0gaXNfYXJyYXkoJHYpID8gYnNwX3V2X3RvX2NzcygkdikgOiAoc3RyaW5nKSR2Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGRlY2xzW10gPSAiYm9yZGVyLXJhZGl1czogeyRjWyd0b3AnXX0geyRjWydyaWdodCddfSB7JGNbJ2JvdHRvbSddfSB7JGNbJ2xlZnQnXX0iOw0KICAgICAgICB9DQogICAgICAgIGlmIChpc3NldCgkc1snX2JhY2tncm91bmQnXVsnY29sb3InXVsnaGV4J10pKSAkZGVjbHNbXSA9ICdiYWNrZ3JvdW5kLWNvbG9yOiAnIC4gJHNbJ19iYWNrZ3JvdW5kJ11bJ2NvbG9yJ11bJ2hleCddOw0KICAgICAgICBpZiAoaXNzZXQoJHNbJ19kaXJlY3Rpb24nXSkpIHsgJGRlY2xzW10gPSAnZGlzcGxheTogZmxleCc7ICRkZWNsc1tdID0gJ2ZsZXgtZGlyZWN0aW9uOiAnIC4gJHNbJ19kaXJlY3Rpb24nXTsgfQ0KICAgICAgICBpZiAoaXNzZXQoJHNbJ19qdXN0aWZ5Q29udGVudCddKSkgJGRlY2xzW10gPSAnanVzdGlmeS1jb250ZW50OiAnIC4gJHNbJ19qdXN0aWZ5Q29udGVudCddOw0KICAgICAgICBpZiAoaXNzZXQoJHNbJ19hbGlnbkl0ZW1zJ10pKSAgICAgJGRlY2xzW10gPSAnYWxpZ24taXRlbXM6ICcgLiAkc1snX2FsaWduSXRlbXMnXTsNCiAgICAgICAgaWYgKGlzc2V0KCRzWydfZmxleFdyYXAnXSkpICAgICAgICRkZWNsc1tdID0gJ2ZsZXgtd3JhcDogJyAuICRzWydfZmxleFdyYXAnXTsNCiAgICAgICAgaWYgKGlzc2V0KCRzWydfdGV4dEFsaWduJ10pKSAgICAgICRkZWNsc1tdID0gJ3RleHQtYWxpZ246ICcgLiAkc1snX3RleHRBbGlnbiddOw0KICAgICAgICBpZiAoaXNzZXQoJHNbJ19kaXNwbGF5J10pKSAgICAgICAgJGRlY2xzW10gPSAnZGlzcGxheTogJyAuICRzWydfZGlzcGxheSddOw0KICAgICAgICBpZiAoaXNzZXQoJHNbJ19vYmplY3RGaXQnXSkpICAgICAgJGRlY2xzW10gPSAnb2JqZWN0LWZpdDogJyAuICRzWydfb2JqZWN0Rml0J107DQogICAgICAgIGlmIChlbXB0eSgkZGVjbHMpKSByZXR1cm4gJyc7DQogICAgICAgIHJldHVybiAnI2JyeGUtJyAuICRpZCAuICcgeyAnIC4gaW1wbG9kZSgnOyAnLCAkZGVjbHMpIC4gJyB9JzsNCiAgICB9DQogICAgZnVuY3Rpb24gYnNwX3JlbmRlcl9icmlja3NfdGVtcGxhdGUoJHBpZCwgJGFyZWFfbGFiZWwpIHsNCiAgICAgICAgLy8gSTIgcGF0Y2ggMjAyNi0wNS0wMzogQnJpY2tzIDIuMy4yIHN0b3JlcyBoZWFkZXIgdGVtcGxhdGVzIGF0IF9icmlja3NfcGFnZV9oZWFkZXJfMg0KICAgICAgICAvLyAodnMgbGVnYWN5IF9icmlja3NfcGFnZV9jb250ZW50XzIgZm9yIG9sZGVyIHRlbXBsYXRlcyBsaWtlIFBJRCAxMDUpLg0KICAgICAgICAvLyBUcnkgYXJlYS1zcGVjaWZpYyBrZXkgZmlyc3QsIGZhbGwgYmFjayB0byBjb250ZW50XzIgZm9yIGxlZ2FjeSBjb21wYXRpYmlsaXR5Lg0KICAgICAgICAka2V5ID0gJ19icmlja3NfcGFnZV8nIC4gJGFyZWFfbGFiZWwgLiAnXzInOw0KICAgICAgICAkZWxlbWVudHMgPSBnZXRfcG9zdF9tZXRhKCRwaWQsICRrZXksIHRydWUpOw0KICAgICAgICBpZiAoIWlzX2FycmF5KCRlbGVtZW50cykgfHwgZW1wdHkoJGVsZW1lbnRzKSkgew0KICAgICAgICAgICAgJGVsZW1lbnRzID0gZ2V0X3Bvc3RfbWV0YSgkcGlkLCAnX2JyaWNrc19wYWdlX2NvbnRlbnRfMicsIHRydWUpOw0KICAgICAgICB9DQogICAgICAgIGlmICghaXNfYXJyYXkoJGVsZW1lbnRzKSB8fCBlbXB0eSgkZWxlbWVudHMpKSByZXR1cm47DQogICAgICAgIGVjaG8gJzwhLS0gQlNQIGNoaWxkLXRoZW1lIHJlbmRlciAnIC4gJGFyZWFfbGFiZWwgLiAnICcgLiAkcGlkIC4gJyBzdGFydCAtLT4nOw0KDQogICAgICAgIC8vIEZvb3RlciB3YXZlIHRvcCBlZGdlIOKAlCBSRU1PVkVEIDIwMjYtMDUtMDggKHYyN2MpIHBlciBSb2JlcnQgZGlyZWN0aXZlLg0KICAgICAgICAvLyAgIFdhcyBBdWRyZXkgRmlnbWEgbm9kZSA2NTI6ODAxIGlubGluZSBTVkcsIGJ1dCBBdWRyZXkncyBuZXcgdGVtcGxhdGUgaWQ9OTYwIGZvb3Rlcg0KICAgICAgICAvLyAgIGlzIHN0YW5kYWxvbmUg4oCUIG5vIGV4dHJhIG5hdnkgd2F2ZSBkZWNvcmF0aW9uIGFib3ZlIGl0LiBSb2JlcnQgc2NyZWVuc2hvdCBNYXkgOCBQTS4NCiAgICAgICAgLy8gICBDaXRlOiDCpzg1LkogVmlzdWFsIEFDSyArIFJvYmVydCBNYXkgOCBFT0Qgc2hpcCBkaXJlY3RpdmUuDQogICAgICAgICRiZWZvcmVfa2V5cyA9IFtdOw0KICAgICAgICBpZiAoY2xhc3NfZXhpc3RzKCdcXEJyaWNrc1xcQXNzZXRzJykpIHsNCiAgICAgICAgICAgICRyYyA9IG5ldyBcUmVmbGVjdGlvbkNsYXNzKCdcXEJyaWNrc1xcQXNzZXRzJyk7DQogICAgICAgICAgICBpZiAoJHJjLT5oYXNQcm9wZXJ0eSgndW5pcXVlX2lubGluZV9jc3MnKSkgew0KICAgICAgICAgICAgICAgICRwcm9wID0gJHJjLT5nZXRQcm9wZXJ0eSgndW5pcXVlX2lubGluZV9jc3MnKTsNCiAgICAgICAgICAgICAgICAkcHJvcC0+c2V0QWNjZXNzaWJsZSh0cnVlKTsNCiAgICAgICAgICAgICAgICAkYmVmb3JlID0gJHByb3AtPmdldFZhbHVlKCk7DQogICAgICAgICAgICAgICAgJGJlZm9yZV9rZXlzID0gaXNfYXJyYXkoJGJlZm9yZSkgPyBhcnJheV9rZXlzKCRiZWZvcmUpIDogW107DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKG1ldGhvZF9leGlzdHMoJ1xcQnJpY2tzXFxBc3NldHMnLCdnZW5lcmF0ZV9jc3NfZnJvbV9lbGVtZW50cycpKSB7DQogICAgICAgICAgICB0cnkgeyBcQnJpY2tzXEFzc2V0czo6Z2VuZXJhdGVfY3NzX2Zyb21fZWxlbWVudHMoJGVsZW1lbnRzLCAkYXJlYV9sYWJlbCk7IH0gY2F0Y2goXFRocm93YWJsZSAkZSkge30NCiAgICAgICAgfQ0KICAgICAgICAkYnJpY2tzX2NzcyA9ICcnOw0KICAgICAgICBpZiAoY2xhc3NfZXhpc3RzKCdcXEJyaWNrc1xcQXNzZXRzJykpIHsNCiAgICAgICAgICAgICRyYyA9IG5ldyBcUmVmbGVjdGlvbkNsYXNzKCdcXEJyaWNrc1xcQXNzZXRzJyk7DQogICAgICAgICAgICBpZiAoJHJjLT5oYXNQcm9wZXJ0eSgndW5pcXVlX2lubGluZV9jc3MnKSkgew0KICAgICAgICAgICAgICAgICRwcm9wID0gJHJjLT5nZXRQcm9wZXJ0eSgndW5pcXVlX2lubGluZV9jc3MnKTsNCiAgICAgICAgICAgICAgICAkcHJvcC0+c2V0QWNjZXNzaWJsZSh0cnVlKTsNCiAgICAgICAgICAgICAgICAkYWxsID0gJHByb3AtPmdldFZhbHVlKCk7DQogICAgICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRhbGwpKSB7DQogICAgICAgICAgICAgICAgICAgICRuZXdfa2V5cyA9IGFycmF5X2RpZmYoYXJyYXlfa2V5cygkYWxsKSwgJGJlZm9yZV9rZXlzKTsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJG5ld19rZXlzIGFzICRrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdiA9ICRhbGxbJGtdOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3N0cmluZygkdikpICRicmlja3NfY3NzIC49ICR2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlmIChpc19hcnJheSgkdikgJiYgaXNzZXQoJHZbJ2NzcyddKSkgJGJyaWNrc19jc3MgLj0gJHZbJ2NzcyddOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgICRjb21wdXRlZCA9ICcnOw0KICAgICAgICBmb3JlYWNoICgkZWxlbWVudHMgYXMgJGVsKSB7ICRyID0gYnNwX2VsZW1lbnRfcnVsZSgkZWwpOyBpZiAoJHIpICRjb21wdXRlZCAuPSAkci4iXG4iOyB9DQogICAgICAgIGVjaG8gJzxzdHlsZSBpZD0iYnNwLScuJGFyZWFfbGFiZWwuJy1jc3MtJy4kcGlkLiciPic7DQogICAgICAgIGVjaG8gIlxuLyogQlNQICRhcmVhX2xhYmVsIGNvbXB1dGVkIChCQVNFIOKAlCBCcmlja3MgQG1lZGlhIHJ1bGVzIGJlbG93IG92ZXJyaWRlKSAqL1xuIi4kY29tcHV0ZWQ7DQogICAgICAgIGVjaG8gJGJyaWNrc19jc3M7DQogICAgICAgIGVjaG8gJzwvc3R5bGU+JzsNCiAgICAgICAgaWYgKGNsYXNzX2V4aXN0cygnXFxCcmlja3NcXEZyb250ZW5kJykgJiYgbWV0aG9kX2V4aXN0cygnXFxCcmlja3NcXEZyb250ZW5kJywncmVuZGVyX2NvbnRlbnQnKSkgew0KICAgICAgICAgICAgXEJyaWNrc1xGcm9udGVuZDo6cmVuZGVyX2NvbnRlbnQoJGVsZW1lbnRzKTsNCiAgICAgICAgfQ0KICAgICAgICBlY2hvICc8IS0tIEJTUCBjaGlsZC10aGVtZSByZW5kZXIgJyAuICRhcmVhX2xhYmVsIC4gJyAnIC4gJHBpZCAuICcgZW5kIC0tPic7DQogICAgfQ0KfQ0KDQoNCiAvKiogV1AgQWRtaW4g4oaSIEFwcGVhcmFuY2Ug4oaSIFRoZW1lIEVkaXRvciDihpIgIkJyaWNrcyBDaGlsZCIg4oaSDQogICogZnVuY3Rpb25zLnBocCDihpIgfmxpbmUgMTQ1OiAqLw0KDQogIEZJTkQ6DQogICAgICBpZiAoJHRwbCAmJiAkdHBsLT5wb3N0X3N0YXR1cyA9PT0gJ3B1Ymxpc2gnKSB7DQogICAgICAgICAgcmV0dXJuOw0KICAgICAgfQ0KDQogIFJFUExBQ0U6DQogICAgICBpZiAoJHRwbCAmJiAkdHBsLT5wb3N0X3N0YXR1cyA9PT0gJ3B1Ymxpc2gnICYmDQogICFpc19mcm9udF9wYWdlKCkpIHsNCiAgICAgICAgICByZXR1cm47DQogICAgICB9DQogICAgICANCi8qKiBPbmUtdGltZSBtaWdyYXRpb246IHB1Ymxpc2ggdGVtcGxhdGUgNjE5ICsgZW5zdXJlIGdsb2JhbCBjb25kaXRpb25zICgyMDI2LTA1LTAzKSAqLw0KYWRkX2FjdGlvbignaW5pdCcsIGZ1bmN0aW9uKCkgew0KICAgIGlmIChnZXRfb3B0aW9uKCdic3BfNjE5X3B1Ymxpc2hfbmF0aXZlX3YxJywgJzAnKSA9PT0gJ2RvbmUnKSByZXR1cm47DQogICAgaWYgKGlzX2FkbWluKCkgJiYgIXdwX2RvaW5nX2FqYXgoKSkgew0KICAgICAgICAvLyBydW4gZHVyaW5nIGZyb250LWVuZCBpbml0LCBza2lwIGFkbWluIGNvbnRleHQgdG8gYXZvaWQgbG9vcHMNCiAgICAgICAgcmV0dXJuOw0KICAgIH0NCiAgICAkcG9zdCA9IGdldF9wb3N0KDYxOSk7DQogICAgaWYgKCEkcG9zdCkgew0KICAgICAgICB1cGRhdGVfb3B0aW9uKCdic3BfNjE5X3B1Ymxpc2hfbmF0aXZlX3YxJywgJ2RvbmVfbm9fcG9zdCcpOw0KICAgICAgICByZXR1cm47DQogICAgfQ0KICAgIC8vIFB1Ymxpc2ggaWYgY3VycmVudGx5IGRyYWZ0DQogICAgaWYgKCRwb3N0LT5wb3N0X3N0YXR1cyAhPT0gJ3B1Ymxpc2gnKSB7DQogICAgICAgIHdwX3VwZGF0ZV9wb3N0KFsNCiAgICAgICAgICAgICdJRCcgPT4gNjE5LA0KICAgICAgICAgICAgJ3Bvc3Rfc3RhdHVzJyA9PiAncHVibGlzaCcsDQogICAgICAgIF0pOw0KICAgIH0NCiAgICAvLyBFbnN1cmUgY29uZGl0aW9ucyBjb3ZlciBmcm9udC1wYWdlICsgcG9zdCArIHBhZ2UgKGFwcGx5IGdsb2JhbGx5KQ0KICAgICRjdXJyZW50ID0gZ2V0X3Bvc3RfbWV0YSg2MTksICdfYnJpY2tzX3RlbXBsYXRlX2NvbmRpdGlvbnMnLCB0cnVlKTsNCiAgICAkbmVlZHNfc2V0ID0gZW1wdHkoJGN1cnJlbnQpIHx8ICFpc19hcnJheSgkY3VycmVudCkgfHwgY291bnQoJGN1cnJlbnQpIDwgMzsNCiAgICBpZiAoJG5lZWRzX3NldCkgew0KICAgICAgICB1cGRhdGVfcG9zdF9tZXRhKDYxOSwgJ19icmlja3NfdGVtcGxhdGVfY29uZGl0aW9ucycsIFsNCiAgICAgICAgICAgIFsnbWFpbicgPT4gJ2Zyb250LXBhZ2UnXSwNCiAgICAgICAgICAgIFsnbWFpbicgPT4gJ3Bvc3QnXSwNCiAgICAgICAgICAgIFsnbWFpbicgPT4gJ3BhZ2UnXSwNCiAgICAgICAgXSk7DQogICAgfQ0KICAgIHVwZGF0ZV9vcHRpb24oJ2JzcF82MTlfcHVibGlzaF9uYXRpdmVfdjEnLCAnZG9uZScpOw0KfSwgNSk7DQoNCi8qKiBFbWl0IGNvbXB1dGVkIENTUyBmb3IgdGhlIENVUlJFTlQgcGFnZSAoZml4ZXMgQnJpY2tzIDIuMy4yIEFycmF5IGJ1ZyBvbiBuYXRpdmUtcmVuZGVyZWQgcGFnZXMgbGlrZSBwYWdlIDgpICovDQphZGRfYWN0aW9uKCd3cF9oZWFkJywgZnVuY3Rpb24oKSB7DQogICAgaWYgKGlzX2FkbWluKCkgfHwgd3BfZG9pbmdfYWpheCgpIHx8IChkZWZpbmVkKCdSRVNUX1JFUVVFU1QnKSAmJiBSRVNUX1JFUVVFU1QpKSByZXR1cm47DQogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYnJpY2tzX2lzX2J1aWxkZXJfbWFpbicpICYmIGJyaWNrc19pc19idWlsZGVyX21haW4oKSkgcmV0dXJuOw0KICAgIGlmICghaXNfc2luZ3VsYXIoKSkgcmV0dXJuOw0KICAgIGdsb2JhbCAkcG9zdDsNCiAgICBpZiAoISRwb3N0IHx8ICFpc3NldCgkcG9zdC0+SUQpKSByZXR1cm47DQogICAgJHBpZCA9IChpbnQpJHBvc3QtPklEOw0KICAgICRlbGVtZW50cyA9IGdldF9wb3N0X21ldGEoJHBpZCwgJ19icmlja3NfcGFnZV9jb250ZW50XzInLCB0cnVlKTsNCiAgICBpZiAoIWlzX2FycmF5KCRlbGVtZW50cykgfHwgZW1wdHkoJGVsZW1lbnRzKSkgcmV0dXJuOw0KICAgICRjc3MgPSAnJzsNCiAgICBmb3JlYWNoICgkZWxlbWVudHMgYXMgJGVsKSB7DQogICAgICAgICRyID0gYnNwX2VsZW1lbnRfcnVsZSgkZWwpOw0KICAgICAgICBpZiAoJHIpICRjc3MgLj0gJHIgLiAiXG4iOw0KICAgIH0NCiAgICANCiAgICAvLyBBdWRyZXkgZGVjb3JhdGl2ZSB3YXZlIGJhY2tncm91bmRzIOKAlCBvbmx5IG9uIHBhZ2UgOCBzZXdlci1jYW1lcmEtaW5zcGVjdGlvbg0KICAgIC8vIEZpZ21hIG5vZGVzOiA2MTI6MTUgbWlkIHdhdmUgKHk9MjIzMSksIDY1MDoxNDUgdG9wIHdhdmUgKHk9Njc5NikNCiAgICBpZiAoJHBpZCA9PT0gOCkgew0KICAgICAgICAvLyBXQVZFUyBBUyBTRUNUSU9OIEJBQ0tHUk9VTkRTIOKAlCBubyBhYnNvbHV0ZSBwb3NpdGlvbmluZywgcmVzcG9uc2l2ZSBieSBkZWZhdWx0DQogICAgICAgIC8vIEZpZ21hIHNwZWM6IHdhdmVfYmFja2dyb3VuZF9lbGVtZW50cyBpcyAjQkVFNkY1IHNvbGlkIHZlY3RvciwgMTQ0MHgxMjQwLCBpbnNpZGUgMDRfUHJvY2Vzc19TdGVwcw0KICAgICAgICAvLyBQcm9wZXIgQ1NTOiBiYWNrZ3JvdW5kLWltYWdlIG9uIHRoZSBzZWN0aW9uIGl0c2VsZiwgY292ZXJzIG5hdHVyYWxseSBhdCBhbGwgdmlld3BvcnRzDQoNCiAgICAgICAgLy8gRkFRIEFDQ09SRElPTiDigJQgY2xpY2stdG8tZXhwYW5kIGJlaGF2aW9yIGZvciBGQVEgY2FyZHMNCiAgICAgICAgZWNobyAnPHNjcmlwdCBpZD0iYnNwLWZhcS1hY2NvcmRpb24tOCI+DQpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7DQogIC8vIFRhcmdldCBPTkxZIHRoZSA2IEZBUSBibG9ja3MgYnkgdGhlaXIgc3BlY2lmaWMgSURzIChmcm9tIGJyaWNrc19wYWdlOF9pZF9tYXAuanNvbikNCiAgdmFyIGZhcUlkcyA9IFsiMmFlNzk0IiwiMTgxYmJiIiwiZWQyN2RjIiwiNWUyNzg1IiwiZTYwMjVhIiwiYTY4MDcxIl07DQogIGZhcUlkcy5mb3JFYWNoKGZ1bmN0aW9uKGJpZCkgew0KICAgIHZhciBjYXJkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJyeGUtIiArIGJpZCk7DQogICAgaWYgKCFjYXJkKSByZXR1cm47DQogICAgdmFyIGg0ID0gY2FyZC5xdWVyeVNlbGVjdG9yKCJoNCwgLmJyeGUtaGVhZGluZyIpOw0KICAgIHZhciBhbnN3ZXIgPSBoNCA/IGg0Lm5leHRFbGVtZW50U2libGluZyA6IG51bGw7DQogICAgaWYgKGg0ICYmIGFuc3dlcikgew0KICAgICAgLy8gSW5pdGlhbGx5IGhpZGUgYW5zd2Vycw0KICAgICAgYW5zd2VyLnN0eWxlLm1heEhlaWdodCA9ICIwIjsNCiAgICAgIGFuc3dlci5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOw0KICAgICAgYW5zd2VyLnN0eWxlLnRyYW5zaXRpb24gPSAibWF4LWhlaWdodCAwLjM1cyBlYXNlLCBvcGFjaXR5IDAuM3MgZWFzZSI7DQogICAgICBhbnN3ZXIuc3R5bGUub3BhY2l0eSA9ICIwIjsNCiAgICAgIC8vIEFkZCBjaGV2cm9uDQogICAgICBoNC5zdHlsZS5jdXJzb3IgPSAicG9pbnRlciI7DQogICAgICBoNC5zdHlsZS5kaXNwbGF5ID0gImZsZXgiOw0KICAgICAgaDQuc3R5bGUuanVzdGlmeUNvbnRlbnQgPSAic3BhY2UtYmV0d2VlbiI7DQogICAgICBoNC5zdHlsZS5hbGlnbkl0ZW1zID0gImNlbnRlciI7DQogICAgICB2YXIgY2hldnJvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsNCiAgICAgIGNoZXZyb24udGV4dENvbnRlbnQgPSAiKyI7DQogICAgICBjaGV2cm9uLnN0eWxlLmZvbnRTaXplID0gIjI4cHgiOw0KICAgICAgY2hldnJvbi5zdHlsZS5mb250V2VpZ2h0ID0gIjcwMCI7DQogICAgICBjaGV2cm9uLnN0eWxlLmNvbG9yID0gIiMzMEM1RkYiOw0KICAgICAgY2hldnJvbi5zdHlsZS50cmFuc2l0aW9uID0gInRyYW5zZm9ybSAwLjNzIGVhc2UiOw0KICAgICAgY2hldnJvbi5zdHlsZS5tYXJnaW5MZWZ0ID0gIjE2cHgiOw0KICAgICAgY2hldnJvbi5zdHlsZS5mbGV4U2hyaW5rID0gIjAiOw0KICAgICAgaDQuYXBwZW5kQ2hpbGQoY2hldnJvbik7DQogICAgICBoNC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgew0KICAgICAgICB2YXIgaXNPcGVuID0gYW5zd2VyLnN0eWxlLm1heEhlaWdodCAhPT0gIjBweCIgJiYgYW5zd2VyLnN0eWxlLm1heEhlaWdodCAhPT0gIjAiOw0KICAgICAgICBpZiAoaXNPcGVuKSB7DQogICAgICAgICAgYW5zd2VyLnN0eWxlLm1heEhlaWdodCA9ICIwIjsNCiAgICAgICAgICBhbnN3ZXIuc3R5bGUub3BhY2l0eSA9ICIwIjsNCiAgICAgICAgICBjaGV2cm9uLnRleHRDb250ZW50ID0gIisiOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIGFuc3dlci5zdHlsZS5tYXhIZWlnaHQgPSBhbnN3ZXIuc2Nyb2xsSGVpZ2h0ICsgInB4IjsNCiAgICAgICAgICBhbnN3ZXIuc3R5bGUub3BhY2l0eSA9ICIxIjsNCiAgICAgICAgICBjaGV2cm9uLnRleHRDb250ZW50ID0gIlx1MjIxMiI7DQogICAgICAgIH0NCiAgICAgIH0pOw0KICAgIH0NCiAgfSk7DQp9KTsNCjwvc2NyaXB0PicuIlxuIjsNCiAgICB9DQp9LCA5OTkpOw0KDQovKioNCiAqIEhlcm8vTWVudSBvdmVybGFwIGFsaWdubWVudCAoQXByIDE1IGRyaWZ0IGZpeCkNCiAqIEZpZ21hIERlc2t0b3AtMSBzcGVjOiBNZW51IDE0NDB4MTYyIGF0IHk9MCwgaGVybyB0ZWNoIGltYWdlIDE0NDB4NTEyIGF0IHk9MTE2Lg0KICogVGhpcyBtZWFucyB0aGUgbWVudSBvdmVybGFwcyB0aGUgdG9wIDQ2cHggb2YgdGhlIGhlcm8gaW1hZ2UuDQogKiBMaXZlIHNpdGUgaGFzIG1lbnUgc3RhY2tpbmcgYWJvdmUgaW1hZ2UgaW4gZmxvdy4gRml4OiBwb3NpdGlvbiBtZW51IGFic29sdXRlDQogKiBhdCB0b3AsIHB1bGwgbWFpbiB1cCB1bmRlciBpdC4NCiAqIFNjb3BlZCB0byBwYWdlLWlkLTggKHNld2VyLWNhbWVyYS1pbnNwZWN0aW9uKSB0byBhdm9pZCBibGVlZC4NCiAqLw0KYWRkX2FjdGlvbignd3BfaGVhZCcsIGZ1bmN0aW9uKCkgew0KICAgIGlmICghaXNfcGFnZSg4KSkgcmV0dXJuOw0KfSwgOTk4KTsNCg0KLyoqIEdsb2JhbCBtb2JpbGUgaGFtYnVyZ2VyIG1lbnUgZm9yIGhlYWRlciB0ZW1wbGF0ZSAxMDUgKi8NCmFkZF9hY3Rpb24oJ3dwX2hlYWQnLCBmdW5jdGlvbigpIHsNCiAgICBpZiAoaXNfYWRtaW4oKSB8fCB3cF9kb2luZ19hamF4KCkgfHwgKGRlZmluZWQoJ1JFU1RfUkVRVUVTVCcpICYmIFJFU1RfUkVRVUVTVCkpIHJldHVybjsNCiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdicmlja3NfaXNfYnVpbGRlcl9tYWluJykgJiYgYnJpY2tzX2lzX2J1aWxkZXJfbWFpbigpKSByZXR1cm47DQp9LCA1KTsNCg0KYWRkX2FjdGlvbignd3BfZm9vdGVyJywgZnVuY3Rpb24oKSB7DQogICAgaWYgKGlzX2FkbWluKCkgfHwgd3BfZG9pbmdfYWpheCgpIHx8IChkZWZpbmVkKCdSRVNUX1JFUVVFU1QnKSAmJiBSRVNUX1JFUVVFU1QpKSByZXR1cm47DQogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYnJpY2tzX2lzX2J1aWxkZXJfbWFpbicpICYmIGJyaWNrc19pc19idWlsZGVyX21haW4oKSkgcmV0dXJuOw0KICAgIGVjaG8gJzxzY3JpcHQgaWQ9ImJzcC1uYXYtbmVzdGVkLWluaXQiPicNCiAgICAgICAuICdkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7Jw0KICAgICAgIC8qIEVhZ2VyLWxvYWQgaW1hZ2VzIChCcmlja3MgbGF6eS1sb2FkIGRhdGEtc3JjIGhhbmRsaW5nKSAqLw0KICAgICAgIC4gJyAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmJzcC1mb3JjZS1oZWFkZXIgaW1nW2RhdGEtc3JjXSwgI2JyeGUtZjVhNGE1IGltZ1tkYXRhLXNyY10sICNicnhlLThhOThhNCBpbWdbZGF0YS1zcmNdLCAjYnJ4ZS1kNGZlOWIsICNicnhlLTlhNzczMCwgI2JyeGUtMGJhMjlhLCAjYnJ4ZS0zZGI5NDYsICNicnhlLWNjZWQwMSwgI2JyeGUtOTljNDZmIGltZywgI2JyeGUtMTM3YTlkIGltZywgI2JyeGUtOWYzY2U2IGltZywgI2JyeGUtYjY0NmU2IGltZywgI2JyeGUtOWE1MGM0IGltZywgI2JyeGUtYmY1MWE5IGltZywgI2JyeGUtNzI2MTc0IikuZm9yRWFjaChmdW5jdGlvbihpbWcpIHsnDQogICAgICAgLiAnICAgIGlmIChpbWcuZGF0YXNldC5zcmMpIHsgaW1nLnNyYyA9IGltZy5kYXRhc2V0LnNyYzsgaW1nLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1zcmMiKTsgfScNCiAgICAgICAuICcgICAgaWYgKGltZy5kYXRhc2V0LnNyY3NldCkgeyBpbWcuc3Jjc2V0ID0gaW1nLmRhdGFzZXQuc3Jjc2V0OyBpbWcucmVtb3ZlQXR0cmlidXRlKCJkYXRhLXNyY3NldCIpOyB9Jw0KICAgICAgIC4gJyAgICBpbWcuY2xhc3NMaXN0LnJlbW92ZSgiYnJpY2tzLWxhenktaGlkZGVuIik7Jw0KICAgICAgIC4gJyAgfSk7Jw0KICAgICAgIC8qIFN0cmlwIGJyaWNrcy1sYXp5LWhpZGRlbiBmcm9tIGZvcmNlLXJlbmRlcmVkIG5hdiBlbGVtZW50cyAqLw0KICAgICAgIC4gJyAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiI2JyeGUtYWExMDAxLCAjYnJ4ZS1hYTEwMDEgKiwgI2JyeGUtYWExMDA3LCAjYnJ4ZS1hYTEwMDgiKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKXsgZWwuY2xhc3NMaXN0LnJlbW92ZSgiYnJpY2tzLWxhenktaGlkZGVuIik7IH0pOycNCiAgICAgICAvKiBXaXJlIE5hdiBOZXN0YWJsZSB0b2dnbGUgKE9wZW4gKyBDbG9zZSB0d2lucykgKi8NCiAgICAgICAuICcgIHZhciBuYXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnJ4ZS1hYTEwMDEiKTsnDQogICAgICAgLiAnICB2YXIgYnRuT3BlbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJicnhlLWFhMTAwNyIpOycNCiAgICAgICAuICcgIHZhciBidG5DbG9zZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJicnhlLWFhMTAwOCIpOycNCiAgICAgICAuICcgIHZhciBpdGVtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJicnhlLWFhMTAwMiIpOycNCiAgICAgICAuICcgIHZhciBPVkVSTEFZX0NTUyA9ICJkaXNwbGF5OmZsZXghaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiFpbXBvcnRhbnQ7cG9zaXRpb246Zml4ZWQhaW1wb3J0YW50O3RvcDowIWltcG9ydGFudDtsZWZ0OjAhaW1wb3J0YW50O3JpZ2h0OjAhaW1wb3J0YW50O2JvdHRvbTowIWltcG9ydGFudDt3aWR0aDoxMDB2dyFpbXBvcnRhbnQ7aGVpZ2h0OjEwMHZoIWltcG9ydGFudDtiYWNrZ3JvdW5kOiNGOEZBRkMhaW1wb3J0YW50O3otaW5kZXg6MjE0NzQ4MzY0NyFpbXBvcnRhbnQ7cGFkZGluZzo4MHB4IDI0cHggMzJweCAyNHB4IWltcG9ydGFudDtnYXA6MCFpbXBvcnRhbnQ7b3BhY2l0eToxIWltcG9ydGFudDt2aXNpYmlsaXR5OnZpc2libGUhaW1wb3J0YW50O2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0IWltcG9ydGFudDthbGlnbi1pdGVtczpzdHJldGNoIWltcG9ydGFudDt0cmFuc2Zvcm06bm9uZSFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O292ZXJmbG93LXk6YXV0byFpbXBvcnRhbnQ7IjsnDQogICAgICAgLiAnICB2YXIgQ0xPU0VfQ1NTID0gImRpc3BsYXk6aW5saW5lLWZsZXghaW1wb3J0YW50O3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudDt0b3A6MTZweCFpbXBvcnRhbnQ7cmlnaHQ6MTZweCFpbXBvcnRhbnQ7d2lkdGg6NDhweCFpbXBvcnRhbnQ7aGVpZ2h0OjQ4cHghaW1wb3J0YW50O3otaW5kZXg6MjE0NzQ4MzY0NyFpbXBvcnRhbnQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O2N1cnNvcjpwb2ludGVyIWltcG9ydGFudDtwYWRkaW5nOjhweCFpbXBvcnRhbnQ7IjsnDQogICAgICAgLiAnICB2YXIgTElOS19DU1MgPSAiZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7Zm9udC1mYW1pbHk6SW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWYhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjcwMCFpbXBvcnRhbnQ7Y29sb3I6IzFEMTc2MCFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O2ZvbnQtc2l6ZToyMnB4IWltcG9ydGFudDtwYWRkaW5nOjE2cHggMjRweCFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMjksMjMsOTYsMC4wOCkhaW1wb3J0YW50O3dpZHRoOmF1dG8haW1wb3J0YW50OyI7Jw0KICAgICAgIC8qIFNhdmUgb3JpZ2luYWwgcGFyZW50IGZvciByZXN0b3JhdGlvbiBvbiBjbG9zZSAqLw0KICAgICAgIC4gJyAgdmFyIGl0ZW1zT3JpZ1BhcmVudCA9IGl0ZW1zID8gaXRlbXMucGFyZW50Tm9kZSA6IG51bGw7Jw0KICAgICAgIC4gJyAgdmFyIGl0ZW1zT3JpZ05leHRTaWJsaW5nID0gaXRlbXMgPyBpdGVtcy5uZXh0U2libGluZyA6IG51bGw7Jw0KICAgICAgIC4gJyAgdmFyIGJ0bkNsb3NlT3JpZ1BhcmVudCA9IGJ0bkNsb3NlID8gYnRuQ2xvc2UucGFyZW50Tm9kZSA6IG51bGw7Jw0KICAgICAgIC4gJyAgdmFyIGJ0bkNsb3NlT3JpZ05leHQgPSBidG5DbG9zZSA/IGJ0bkNsb3NlLm5leHRTaWJsaW5nIDogbnVsbDsnDQogICAgICAgLiAnICBpZiAobmF2ICYmIGJ0bk9wZW4gJiYgaXRlbXMpIHsgYnRuT3Blbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKGUpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyBuYXYuY2xhc3NMaXN0LmFkZCgiYnJ4LW9wZW4iKTsgLyogUkVMT0NBVEUgaXRlbXMgKyBjbG9zZSBidXR0b24gdG8gYm9keSByb290IHRvIGVzY2FwZSB0cmFwcGVkIHN0YWNraW5nIGNvbnRleHQgKi8gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpdGVtcyk7IGlmIChidG5DbG9zZSkgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChidG5DbG9zZSk7IGl0ZW1zLnN0eWxlLmNzc1RleHQgPSBPVkVSTEFZX0NTUzsgaWYgKGJ0bkNsb3NlKSBidG5DbG9zZS5zdHlsZS5jc3NUZXh0ID0gQ0xPU0VfQ1NTOyBidG5PcGVuLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7IFtdLmZvckVhY2guY2FsbChpdGVtcy5xdWVyeVNlbGVjdG9yQWxsKCJhLmJyeGUtdGV4dC1saW5rIiksIGZ1bmN0aW9uKGEpeyBhLnN0eWxlLmNzc1RleHQgPSBMSU5LX0NTUzsgfSk7IGJ0bk9wZW4uc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIiwgInRydWUiKTsgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7IH0pOyB9Jw0KICAgICAgIC4gJyAgaWYgKG5hdiAmJiBidG5DbG9zZSAmJiBpdGVtcykgeyBidG5DbG9zZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKGUpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyBuYXYuY2xhc3NMaXN0LnJlbW92ZSgiYnJ4LW9wZW4iKTsgaXRlbXMuc3R5bGUuY3NzVGV4dCA9ICIiOyBidG5DbG9zZS5zdHlsZS5jc3NUZXh0ID0gIiI7IGJ0bk9wZW4uc3R5bGUuZGlzcGxheSA9ICIiOyBbXS5mb3JFYWNoLmNhbGwoaXRlbXMucXVlcnlTZWxlY3RvckFsbCgiYS5icnhlLXRleHQtbGluayIpLCBmdW5jdGlvbihhKXsgYS5zdHlsZS5jc3NUZXh0ID0gIiI7IH0pOyAvKiBSRVNUT1JFIG9yaWdpbmFsIHBhcmVudCAqLyBpZiAoaXRlbXNPcmlnUGFyZW50KSBpdGVtc09yaWdQYXJlbnQuaW5zZXJ0QmVmb3JlKGl0ZW1zLCBpdGVtc09yaWdOZXh0U2libGluZyk7IGlmIChidG5DbG9zZU9yaWdQYXJlbnQpIGJ0bkNsb3NlT3JpZ1BhcmVudC5pbnNlcnRCZWZvcmUoYnRuQ2xvc2UsIGJ0bkNsb3NlT3JpZ05leHQpOyBidG5PcGVuLnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsICJmYWxzZSIpOyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAiIjsgfSk7IH0nDQogICAgICAgLyogQ2xvc2Ugb24gRXNjYXBlIGtleSAqLw0KICAgICAgIC4gJyAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIGZ1bmN0aW9uKGUpIHsgaWYgKGUua2V5ID09PSAiRXNjYXBlIiAmJiBuYXYgJiYgbmF2LmNsYXNzTGlzdC5jb250YWlucygiYnJ4LW9wZW4iKSkgeyBuYXYuY2xhc3NMaXN0LnJlbW92ZSgiYnJ4LW9wZW4iKTsgaWYgKGJ0bk9wZW4pIGJ0bk9wZW4uc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIiwgImZhbHNlIik7IH0gfSk7Jw0KICAgICAgIC4gJ30pOycNCiAgICAgICAuICc8L3NjcmlwdD4nIC4gIlxuIjsNCn0sIDk5OCk7DQoNCi8qKiBGb290ZXIgYXQgd3BfZm9vdGVyLCBwcmlvcml0eSA5OTkg4oCUIFJFLUVOQUJMRUQgMjAyNi0wNS0wOCAodjI3YikgcGVyIFJvYmVydCBkaXJlY3RpdmUuDQogKiAgUmVuZGVycyBBdWRyZXkncyBuZXcgQnJpY2tzIHRlbXBsYXRlIGlkPTk2MCAocmVwbGFjaW5nIHByaW9yIENDLWJ1aWx0IHRlbXBsYXRlIGlkPTEwNikuDQogKiAgQ2l0ZTogwqc4NS5KICsgwqc4NS5UICsgUm9iZXJ0IE1heSA4IFBNICJbYnJpY2tzX3RlbXBsYXRlIGlkPVwiOTYwXCJdIGlzIHRoZSBmb290ZXIiLiAqLw0KYWRkX2FjdGlvbignd3BfZm9vdGVyJywgZnVuY3Rpb24oKSB7DQogICAgaWYgKGlzX2FkbWluKCkgfHwgd3BfZG9pbmdfYWpheCgpIHx8IChkZWZpbmVkKCdSRVNUX1JFUVVFU1QnKSAmJiBSRVNUX1JFUVVFU1QpKSByZXR1cm47DQogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYnJpY2tzX2lzX2J1aWxkZXJfbWFpbicpICYmIGJyaWNrc19pc19idWlsZGVyX21haW4oKSkgcmV0dXJuOw0KICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2JzcF9yZW5kZXJfYnJpY2tzX3RlbXBsYXRlJykpIHsNCiAgICAgICAgYnNwX3JlbmRlcl9icmlja3NfdGVtcGxhdGUoOTYwLCAnZm9vdGVyJyk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgZWNobyBkb19zaG9ydGNvZGUoJ1ticmlja3NfdGVtcGxhdGUgaWQ9Ijk2MCJdJyk7DQogICAgfQ0KfSwgOTk5KTsNCi8qKg0KICogRm9vdGVyIHNvY2lhbCBhbmNob3IgaHJlZiBmaXggKEFwciAxNSkNCiAqIEJyaWNrcyAyLjMuMiBpbWFnZSBlbGVtZW50IHdyYXBzIGltYWdlcyBpbiA8YSBjbGFzcz0iYnJ4ZS1pbWFnZSB0YWciPiBidXQNCiAqIGRvZXMgbm90IGVtaXQgaHJlZi4gV2UgaW5qZWN0IGhyZWZzIGZvciB0aGUgNiBzb2NpYWwgaWNvbnMgaW4gdGhlIFNvY2lhbA0KICogUm93IGJsb2NrIChwYXJlbnQgaWQ9OTAzMGExIGluIGZvb3RlciB0ZW1wbGF0ZSAxMDYpIHZpYSByZWdleCByZXdyaXRlIG9uDQogKiB0aGUgZmluYWwgSFRNTCByZXNwb25zZS4gS2V5ZWQgYnkgZWFjaCBpY29uJ3MgZWxlbWVudCBpZC4NCiAqLw0KYWRkX2FjdGlvbigndGVtcGxhdGVfcmVkaXJlY3QnLCBmdW5jdGlvbigpIHsNCiAgICBpZiAoaXNfYWRtaW4oKSB8fCB3cF9kb2luZ19hamF4KCkgfHwgKGRlZmluZWQoJ1JFU1RfUkVRVUVTVCcpICYmIFJFU1RfUkVRVUVTVCkpIHJldHVybjsNCiAgICBvYl9zdGFydChmdW5jdGlvbigkaHRtbCkgew0KICAgICAgICAkbWFwID0gWw0KICAgICAgICAgICAgJzk5YzQ2ZicgPT4gJ2h0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9jYWxsYnJpZ2h0c2lkZXBsdW1iaW5nLycsDQogICAgICAgICAgICAnMTM3YTlkJyA9PiAnaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9jYWxsYnJpZ2h0c2lkZXBsdW1iaW5nLycsDQogICAgICAgICAgICAnOWYzY2U2JyA9PiAnaHR0cHM6Ly94LmNvbS9DYWxsQnJpZ2h0U2lkZScsDQogICAgICAgICAgICAnYjY0NmU2JyA9PiAnaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbXBhbnkvYnJpZ2h0LXNpZGUtcGx1bWJpbmcvJywNCiAgICAgICAgICAgICc5YTUwYzQnID0+ICdodHRwczovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsL1VDU3BMSDV5cUlKaGRoRUVWZUVIT3U4UScsDQogICAgICAgICAgICAnYmY1MWE5JyA9PiAnaHR0cHM6Ly93d3cucGludGVyZXN0LmNvbS9jYWxsYnJpZ2h0c2lkZS8nLA0KICAgICAgICBdOw0KICAgICAgICBmb3JlYWNoICgkbWFwIGFzICRpZCA9PiAkdXJsKSB7DQogICAgICAgICAgICAkZXNjID0gZXNjX3VybCgkdXJsKTsNCiAgICAgICAgICAgICRodG1sID0gcHJlZ19yZXBsYWNlKA0KICAgICAgICAgICAgICAgICcvPGFccytpZD0iYnJ4ZS0nIC4gcHJlZ19xdW90ZSgkaWQsICcvJykgLiAnIihbXj5dKik+LycsDQogICAgICAgICAgICAgICAgJzxhIGlkPSJicnhlLScgLiAkaWQgLiAnIiBocmVmPSInIC4gJGVzYyAuICciIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiJDE+JywNCiAgICAgICAgICAgICAgICAkaHRtbCwNCiAgICAgICAgICAgICAgICAxDQogICAgICAgICAgICApOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkaHRtbDsNCiAgICB9KTsNCn0sIDApOw0KDQoNCi8vIEJTUF9MT0NBVElPTl9TQ0hFTUFfQVBSMjcg4oCUIEFwciAyNyBzZXNzaW9uIDIgcGF0aCAoZCkg4oCUIHNjaGVtYSBpbmplY3Rpb24gdmlhIHdwX2hlYWQgOTk5Lg0KLy8gRW1iZWRkZWQgYnJpZWYgZGF0YSBwZXIgL29wdC9uZXh1cy9uZXh1cy9zY3JpcHRzL291dHB1dC9wbGF5Ym9va3MvQlNQX0JyaWNrc19Db2RlYmFzZV9Eb2N1bWVudGF0aW9uLmh0bWwjc2VjdGlvbi00MS1zY2hlbWEtd3BoZWFkLW1pZ3JhdGlvbg0KLy8gU291cmNlOiAvdG1wL3M3X2xvY188c2x1Zz5fY29udGVudF9icmllZi5qc29uICgxNCBjaXRpZXMpIOKAlCBzY2hlbWEtcmVsZXZhbnQgZmllbGRzIG9ubHkuDQovLyBSZS1kZXBsb3kgdmlhIC9ic3AvdjIvdGhlbWUvaW5zdGFsbC1jaGlsZCB0byByZWZyZXNoIGFmdGVyIGJyaWVmIHVwZGF0ZXMuDQokQlNQX0xPQ0FUSU9OUyA9IFsNCiAgICAnb2xhdGhlJyA9PiBbDQogICAgICAgICdjaXR5X25hbWUnID0+ICdPbGF0aGUnLA0KICAgICAgICAnY2l0eV9zbHVnJyA9PiAnb2xhdGhlJywNCiAgICAgICAgJ25laWdoYm9yaG9vZHMnID0+IFsNCiAgICAgICAgICAgICdPbGF0aGUgVmlldycsDQogICAgICAgICAgICAnQ2VkYXIgQ3JlZWsnLA0KICAgICAgICAgICAgJ1N0b25lIENhbnlvbicsDQogICAgICAgICAgICAnRm9yZXN0IFZpZXcnLA0KICAgICAgICAgICAgJ0FyYm9yIENyZWVrJywNCiAgICAgICAgICAgICdQZXJzaW1tb24gSGlsbCcsDQogICAgICAgICAgICAnQnJpdHRhbnkgTWVhZG93cycNCiAgICAgICAgXSwNCiAgICAgICAgJ25lYXJieV9jaXRpZXMnID0+IFsNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ092ZXJsYW5kIFBhcmsnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb3ZlcmxhbmQtcGFyaycNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZWF3b29kJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlYXdvb2QnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnU2hhd25lZScsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdzaGF3bmVlJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1ByYWlyaWUgVmlsbGFnZScsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdwcmFpcmllLXZpbGxhZ2UnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTGVuZXhhJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlbmV4YScNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdNZXJyaWFtJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ21lcnJpYW0nDQogICAgICAgICAgICBdDQogICAgICAgIF0sDQogICAgICAgICdmYXEnID0+IFsNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBzZXJ2ZSBteSBPbGF0aGUgbmVpZ2hib3Job29kPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIE9sYXRoZSBhbmQgZXZlcnkgWklQIGZyb20gNjYwNjEgdG8gNjYwNjMgaWYgd2VcJ3JlIGNvdmVyaW5nIGFsbCA0IG9mIHRoZW0uIE9sYXRoZSBWaWV3LCBDZWRhciBDcmVlaywgU3RvbmUgQ2FueW9uLCBGb3Jlc3QgVmlldywgYW5kIDIwKyBtb3JlLiBTYW1lLWRheSBhY3Jvc3MgYWxsIG9mIHRoZW0uJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBmYXN0IGNhbiB5b3UgZ2V0IHRvIE9sYXRoZT8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnQXZlcmFnZSByZXNwb25zZSB0aW1lIGFjcm9zcyBPbGF0aGUgaXMgNjAgbWludXRlcy4gRW1lcmdlbmN5PyBDYWxsICg5MTMpIDk2My0xMDI5IGFuZCBhIGRpc3BhdGNoZXIgcGlja3MgdXAgaW4gMTUgc2Vjb25kcywgMjQvNy4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnQXJlIHlvdSBsaWNlbnNlZCBpbiBKb2huc29uIENvdW50eT8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCBsaWNlbnNlZCwgaW5zdXJlZCwgYW5kIGJvbmRlZC4gV2VcJ3ZlIGhlbGQgb3VyIG1hc3RlciBwbHVtYmVyIGxpY2Vuc2UgaW4gSm9obnNvbiBDb3VudHkgZm9yIDUgZ2VuZXJhdGlvbnMuIE5vdCBhIG5hdGlvbmFsIGZyYW5jaGlzZSDigJQgYSBmYW1pbHkgYnVzaW5lc3Mgd2l0aCBvdXIgSFEgYXQgMTIwMjIgQmx1ZSBWYWxsZXkgUGt3eSwgT3ZlcmxhbmQgUGFyaywgS1MgNjYyMTMuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBtdWNoIGRvZXMgYSBzZXJ2aWNlIGNhbGwgY29zdD8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnVXBmcm9udCBmbGF0LXJhdGUgcHJpY2luZyBiZWZvcmUgYW55IHdvcmsgc3RhcnRzLiBObyBob3VybHkgc3VycHJpc2VzLiBTZXJ2aWNlIGNhbGwgZmVlIGlzIHdhaXZlZCB3aGVuIHlvdSBhcHByb3ZlIHRoZSByZXBhaXIuIEZyZWUgZXN0aW1hdGVzIG9uIG1ham9yIHdvcmsuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBvZmZlciBmaW5hbmNpbmc/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgMCUgQVBSIGZvciAxMiBtb250aHMgb24gcXVhbGlmaWVkIGluc3RhbGxzICh3YXRlciBoZWF0ZXJzLCBzZXdlciByZXBsYWNlbWVudCwgc3VtcCBwdW1wcykuIFBsdXMgNi8xMi8xOC1tb250aCBwbGFucyB0aHJvdWdoIFdpc2V0YWNrLiBBc2sgeW91ciB0ZWNoIG9uLXNpdGUuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ1doeSBzaG91bGQgT2xhdGhlIGhvbWVvd25lcnMgdHJ1c3QgQnJpZ2h0IFNpZGUgUGx1bWJpbmc/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJzUgZ2VuZXJhdGlvbnMgb2YgcGx1bWJlcnMg4oCUIHNhbWUgZmFtaWx5LCBzYW1lIE92ZXJsYW5kIFBhcmsgSFEsIHNpbmNlIHRoZSAxOTIwcy4gQSsgQkJCLiA0Ljkgc3RhcnMgKDM4NCsgR29vZ2xlIHJldmlld3MpLiBMaWNlbnNlZCArIGluc3VyZWQuIEV2ZXJ5IHJlcGFpciByZXZpZXdlZCBvciBwZXJmb3JtZWQgYnkgYSBsaWNlbnNlZCBtYXN0ZXIgcGx1bWJlci4nDQogICAgICAgICAgICBdDQogICAgICAgIF0sDQogICAgICAgICd6aXBzJyA9PiBbDQogICAgICAgICAgICAnNjYwNjEnLA0KICAgICAgICAgICAgJzY2MDYyJywNCiAgICAgICAgICAgICc2NjA1MScsDQogICAgICAgICAgICAnNjYwNjMnDQogICAgICAgIF0NCiAgICBdLA0KICAgICdsZWF3b29kJyA9PiBbDQogICAgICAgICdjaXR5X25hbWUnID0+ICdMZWF3b29kJywNCiAgICAgICAgJ2NpdHlfc2x1ZycgPT4gJ2xlYXdvb2QnLA0KICAgICAgICAnbmVpZ2hib3Job29kcycgPT4gWw0KICAgICAgICAgICAgJ0xlYXdvb2QnLA0KICAgICAgICAgICAgJ0xlYXdvb2QgU291dGgnLA0KICAgICAgICAgICAgJ0xlYXdvb2QgVmlsbGFnZScsDQogICAgICAgICAgICAnTGVhd29vZCBUb3duIENlbnRlcicsDQogICAgICAgICAgICAnTGVhd29vZCBIaWxscycsDQogICAgICAgICAgICAnTGVhd29vZCBFc3RhdGVzJywNCiAgICAgICAgICAgICdMZWF3b29kIEZhbGxzJywNCiAgICAgICAgICAgICdMZWF3b29kIE1lYWRvd3MnDQogICAgICAgIF0sDQogICAgICAgICduZWFyYnlfY2l0aWVzJyA9PiBbDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPdmVybGFuZCBQYXJrJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ292ZXJsYW5kLXBhcmsnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnT2xhdGhlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ29sYXRoZScNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdTaGF3bmVlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3NoYXduZWUnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnUHJhaXJpZSBWaWxsYWdlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3ByYWlyaWUtdmlsbGFnZScNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZW5leGEnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVuZXhhJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ01lcnJpYW0nLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbWVycmlhbScNCiAgICAgICAgICAgIF0NCiAgICAgICAgXSwNCiAgICAgICAgJ2ZhcScgPT4gWw0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IHNlcnZlIG15IExlYXdvb2QgbmVpZ2hib3Job29kPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIExlYXdvb2QgYW5kIGV2ZXJ5IFpJUCBmcm9tIDY2MjA2IHRvIDY2MjI0IGlmIHdlXCdyZSBjb3ZlcmluZyBhbGwgNCBvZiB0aGVtLiBMZWF3b29kLCBMZWF3b29kIFNvdXRoLCBMZWF3b29kIFZpbGxhZ2UsIExlYXdvb2QgVG93biBDZW50ZXIsIGFuZCAyMCsgbW9yZS4gU2FtZS1kYXkgYWNyb3NzIGFsbCBvZiB0aGVtLicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdIb3cgZmFzdCBjYW4geW91IGdldCB0byBMZWF3b29kPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdBdmVyYWdlIHJlc3BvbnNlIHRpbWUgYWNyb3NzIExlYXdvb2QgaXMgNjAgbWludXRlcy4gRW1lcmdlbmN5PyBDYWxsICg5MTMpIDk2My0xMDI5IGFuZCBhIGRpc3BhdGNoZXIgcGlja3MgdXAgaW4gMTUgc2Vjb25kcywgMjQvNy4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnQXJlIHlvdSBsaWNlbnNlZCBpbiBKb2huc29uIENvdW50eT8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCBsaWNlbnNlZCwgaW5zdXJlZCwgYW5kIGJvbmRlZC4gV2VcJ3ZlIGhlbGQgb3VyIG1hc3RlciBwbHVtYmVyIGxpY2Vuc2UgaW4gSm9obnNvbiBDb3VudHkgZm9yIDUgZ2VuZXJhdGlvbnMuIE5vdCBhIG5hdGlvbmFsIGZyYW5jaGlzZSDigJQgYSBmYW1pbHkgYnVzaW5lc3Mgd2l0aCBvdXIgSFEgYXQgMTIwMjIgQmx1ZSBWYWxsZXkgUGt3eSwgT3ZlcmxhbmQgUGFyaywgS1MgNjYyMTMuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBtdWNoIGRvZXMgYSBzZXJ2aWNlIGNhbGwgY29zdD8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnVXBmcm9udCBmbGF0LXJhdGUgcHJpY2luZyBiZWZvcmUgYW55IHdvcmsgc3RhcnRzLiBObyBob3VybHkgc3VycHJpc2VzLiBTZXJ2aWNlIGNhbGwgZmVlIGlzIHdhaXZlZCB3aGVuIHlvdSBhcHByb3ZlIHRoZSByZXBhaXIuIEZyZWUgZXN0aW1hdGVzIG9uIG1ham9yIHdvcmsuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBvZmZlciBmaW5hbmNpbmc/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgMCUgQVBSIGZvciAxMiBtb250aHMgb24gcXVhbGlmaWVkIGluc3RhbGxzICh3YXRlciBoZWF0ZXJzLCBzZXdlciByZXBsYWNlbWVudCwgc3VtcCBwdW1wcykuIFBsdXMgNi8xMi8xOC1tb250aCBwbGFucyB0aHJvdWdoIFdpc2V0YWNrLiBBc2sgeW91ciB0ZWNoIG9uLXNpdGUuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ1doeSBzaG91bGQgTGVhd29vZCBob21lb3duZXJzIHRydXN0IEJyaWdodCBTaWRlIFBsdW1iaW5nPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICc1IGdlbmVyYXRpb25zIG9mIHBsdW1iZXJzIOKAlCBzYW1lIGZhbWlseSwgc2FtZSBPdmVybGFuZCBQYXJrIEhRLCBzaW5jZSB0aGUgMTkyMHMuIEErIEJCQi4gNC45IHN0YXJzICgzODQrIEdvb2dsZSByZXZpZXdzKS4gTGljZW5zZWQgKyBpbnN1cmVkLiBFdmVyeSByZXBhaXIgcmV2aWV3ZWQgb3IgcGVyZm9ybWVkIGJ5IGEgbGljZW5zZWQgbWFzdGVyIHBsdW1iZXIuJw0KICAgICAgICAgICAgXQ0KICAgICAgICBdLA0KICAgICAgICAnemlwcycgPT4gWw0KICAgICAgICAgICAgJzY2MjA2JywNCiAgICAgICAgICAgICc2NjIwOScsDQogICAgICAgICAgICAnNjYyMTEnLA0KICAgICAgICAgICAgJzY2MjI0Jw0KICAgICAgICBdDQogICAgXSwNCiAgICAnbGVuZXhhJyA9PiBbDQogICAgICAgICdjaXR5X25hbWUnID0+ICdMZW5leGEnLA0KICAgICAgICAnY2l0eV9zbHVnJyA9PiAnbGVuZXhhJywNCiAgICAgICAgJ25laWdoYm9yaG9vZHMnID0+IFsNCiAgICAgICAgICAgICdMZW5leGEgV2VzdCcsDQogICAgICAgICAgICAnQ291bnRyeSBIaWxsJywNCiAgICAgICAgICAgICdMZW5leGEgQ2VudGVyJywNCiAgICAgICAgICAgICdDb2xvbnkgV29vZHMnLA0KICAgICAgICAgICAgJ0xlbmV4YSBIaWxscyBFYXN0JywNCiAgICAgICAgICAgICdTdGVybGluZyBPZiBMZW5leGEnLA0KICAgICAgICAgICAgJ0ZhbGNvbiBWYWxsZXknLA0KICAgICAgICAgICAgJ0NhbnlvbiBDcmVlaycNCiAgICAgICAgXSwNCiAgICAgICAgJ25lYXJieV9jaXRpZXMnID0+IFsNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ092ZXJsYW5kIFBhcmsnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb3ZlcmxhbmQtcGFyaycNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPbGF0aGUnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb2xhdGhlJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0xlYXdvb2QnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVhd29vZCcNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdTaGF3bmVlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3NoYXduZWUnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnUHJhaXJpZSBWaWxsYWdlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3ByYWlyaWUtdmlsbGFnZScNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdNZXJyaWFtJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ21lcnJpYW0nDQogICAgICAgICAgICBdDQogICAgICAgIF0sDQogICAgICAgICdmYXEnID0+IFsNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBzZXJ2ZSBteSBMZW5leGEgbmVpZ2hib3Job29kPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIExlbmV4YSBhbmQgZXZlcnkgWklQIGZyb20gNjYyMTUgdG8gNjYyMjcgaWYgd2VcJ3JlIGNvdmVyaW5nIGFsbCA0IG9mIHRoZW0uIExlbmV4YSBXZXN0LCBDb3VudHJ5IEhpbGwsIExlbmV4YSBDZW50ZXIsIENvbG9ueSBXb29kcywgYW5kIDIwKyBtb3JlLiBTYW1lLWRheSBhY3Jvc3MgYWxsIG9mIHRoZW0uJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBmYXN0IGNhbiB5b3UgZ2V0IHRvIExlbmV4YT8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnQXZlcmFnZSByZXNwb25zZSB0aW1lIGFjcm9zcyBMZW5leGEgaXMgNjAgbWludXRlcy4gRW1lcmdlbmN5PyBDYWxsICg5MTMpIDk2My0xMDI5IGFuZCBhIGRpc3BhdGNoZXIgcGlja3MgdXAgaW4gMTUgc2Vjb25kcywgMjQvNy4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnQXJlIHlvdSBsaWNlbnNlZCBpbiBKb2huc29uIENvdW50eT8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCBsaWNlbnNlZCwgaW5zdXJlZCwgYW5kIGJvbmRlZC4gV2VcJ3ZlIGhlbGQgb3VyIG1hc3RlciBwbHVtYmVyIGxpY2Vuc2UgaW4gSm9obnNvbiBDb3VudHkgZm9yIDUgZ2VuZXJhdGlvbnMuIE5vdCBhIG5hdGlvbmFsIGZyYW5jaGlzZSDigJQgYSBmYW1pbHkgYnVzaW5lc3Mgd2l0aCBvdXIgSFEgYXQgMTIwMjIgQmx1ZSBWYWxsZXkgUGt3eSwgT3ZlcmxhbmQgUGFyaywgS1MgNjYyMTMuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBtdWNoIGRvZXMgYSBzZXJ2aWNlIGNhbGwgY29zdD8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnVXBmcm9udCBmbGF0LXJhdGUgcHJpY2luZyBiZWZvcmUgYW55IHdvcmsgc3RhcnRzLiBObyBob3VybHkgc3VycHJpc2VzLiBTZXJ2aWNlIGNhbGwgZmVlIGlzIHdhaXZlZCB3aGVuIHlvdSBhcHByb3ZlIHRoZSByZXBhaXIuIEZyZWUgZXN0aW1hdGVzIG9uIG1ham9yIHdvcmsuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBvZmZlciBmaW5hbmNpbmc/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgMCUgQVBSIGZvciAxMiBtb250aHMgb24gcXVhbGlmaWVkIGluc3RhbGxzICh3YXRlciBoZWF0ZXJzLCBzZXdlciByZXBsYWNlbWVudCwgc3VtcCBwdW1wcykuIFBsdXMgNi8xMi8xOC1tb250aCBwbGFucyB0aHJvdWdoIFdpc2V0YWNrLiBBc2sgeW91ciB0ZWNoIG9uLXNpdGUuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ1doeSBzaG91bGQgTGVuZXhhIGhvbWVvd25lcnMgdHJ1c3QgQnJpZ2h0IFNpZGUgUGx1bWJpbmc/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJzUgZ2VuZXJhdGlvbnMgb2YgcGx1bWJlcnMg4oCUIHNhbWUgZmFtaWx5LCBzYW1lIE92ZXJsYW5kIFBhcmsgSFEsIHNpbmNlIHRoZSAxOTIwcy4gQSsgQkJCLiA0Ljkgc3RhcnMgKDM4NCsgR29vZ2xlIHJldmlld3MpLiBMaWNlbnNlZCArIGluc3VyZWQuIEV2ZXJ5IHJlcGFpciByZXZpZXdlZCBvciBwZXJmb3JtZWQgYnkgYSBsaWNlbnNlZCBtYXN0ZXIgcGx1bWJlci4nDQogICAgICAgICAgICBdDQogICAgICAgIF0sDQogICAgICAgICd6aXBzJyA9PiBbDQogICAgICAgICAgICAnNjYyMTUnLA0KICAgICAgICAgICAgJzY2MjE5JywNCiAgICAgICAgICAgICc2NjIyMCcsDQogICAgICAgICAgICAnNjYyMjcnDQogICAgICAgIF0NCiAgICBdLA0KICAgICdzaGF3bmVlJyA9PiBbDQogICAgICAgICdjaXR5X25hbWUnID0+ICdTaGF3bmVlJywNCiAgICAgICAgJ2NpdHlfc2x1ZycgPT4gJ3NoYXduZWUnLA0KICAgICAgICAnbmVpZ2hib3Job29kcycgPT4gWw0KICAgICAgICAgICAgJ1NoYXduZWUnLA0KICAgICAgICAgICAgJ01vbnRpY2VsbG8nLA0KICAgICAgICAgICAgJ1dvb2Rzb25pYScsDQogICAgICAgICAgICAnU2hhd25lZSBNaXNzaW9uIFBhcmsnLA0KICAgICAgICAgICAgJ0NsZWFyIENyZWVrJywNCiAgICAgICAgICAgICdTaWx2ZXJoZWVsIFdvb2RzJw0KICAgICAgICBdLA0KICAgICAgICAnbmVhcmJ5X2NpdGllcycgPT4gWw0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnT3ZlcmxhbmQgUGFyaycsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdvdmVybGFuZC1wYXJrJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ09sYXRoZScsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdvbGF0aGUnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTGVhd29vZCcsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdsZWF3b29kJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1ByYWlyaWUgVmlsbGFnZScsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdwcmFpcmllLXZpbGxhZ2UnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTGVuZXhhJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlbmV4YScNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdNZXJyaWFtJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ21lcnJpYW0nDQogICAgICAgICAgICBdDQogICAgICAgIF0sDQogICAgICAgICdmYXEnID0+IFsNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBzZXJ2ZSBteSBTaGF3bmVlIG5laWdoYm9yaG9vZD8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCBTaGF3bmVlIGFuZCBldmVyeSBaSVAgZnJvbSA2NjIwMyB0byA2NjIyNiBpZiB3ZVwncmUgY292ZXJpbmcgYWxsIDUgb2YgdGhlbS4gU2hhd25lZSwgTW9udGljZWxsbywgV29vZHNvbmlhLCBTaGF3bmVlIE1pc3Npb24gUGFyaywgYW5kIDIwKyBtb3JlLiBTYW1lLWRheSBhY3Jvc3MgYWxsIG9mIHRoZW0uJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBmYXN0IGNhbiB5b3UgZ2V0IHRvIFNoYXduZWU/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ0F2ZXJhZ2UgcmVzcG9uc2UgdGltZSBhY3Jvc3MgU2hhd25lZSBpcyA2MCBtaW51dGVzLiBFbWVyZ2VuY3k/IENhbGwgKDkxMykgOTYzLTEwMjkgYW5kIGEgZGlzcGF0Y2hlciBwaWNrcyB1cCBpbiAxNSBzZWNvbmRzLCAyNC83LicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdBcmUgeW91IGxpY2Vuc2VkIGluIEpvaG5zb24gQ291bnR5PycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIGxpY2Vuc2VkLCBpbnN1cmVkLCBhbmQgYm9uZGVkLiBXZVwndmUgaGVsZCBvdXIgbWFzdGVyIHBsdW1iZXIgbGljZW5zZSBpbiBKb2huc29uIENvdW50eSBmb3IgNSBnZW5lcmF0aW9ucy4gTm90IGEgbmF0aW9uYWwgZnJhbmNoaXNlIOKAlCBhIGZhbWlseSBidXNpbmVzcyB3aXRoIG91ciBIUSBhdCAxMjAyMiBCbHVlIFZhbGxleSBQa3d5LCBPdmVybGFuZCBQYXJrLCBLUyA2NjIxMy4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IG11Y2ggZG9lcyBhIHNlcnZpY2UgY2FsbCBjb3N0PycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdVcGZyb250IGZsYXQtcmF0ZSBwcmljaW5nIGJlZm9yZSBhbnkgd29yayBzdGFydHMuIE5vIGhvdXJseSBzdXJwcmlzZXMuIFNlcnZpY2UgY2FsbCBmZWUgaXMgd2FpdmVkIHdoZW4geW91IGFwcHJvdmUgdGhlIHJlcGFpci4gRnJlZSBlc3RpbWF0ZXMgb24gbWFqb3Igd29yay4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IG9mZmVyIGZpbmFuY2luZz8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCAwJSBBUFIgZm9yIDEyIG1vbnRocyBvbiBxdWFsaWZpZWQgaW5zdGFsbHMgKHdhdGVyIGhlYXRlcnMsIHNld2VyIHJlcGxhY2VtZW50LCBzdW1wIHB1bXBzKS4gUGx1cyA2LzEyLzE4LW1vbnRoIHBsYW5zIHRocm91Z2ggV2lzZXRhY2suIEFzayB5b3VyIHRlY2ggb24tc2l0ZS4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnV2h5IHNob3VsZCBTaGF3bmVlIGhvbWVvd25lcnMgdHJ1c3QgQnJpZ2h0IFNpZGUgUGx1bWJpbmc/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJzUgZ2VuZXJhdGlvbnMgb2YgcGx1bWJlcnMg4oCUIHNhbWUgZmFtaWx5LCBzYW1lIE92ZXJsYW5kIFBhcmsgSFEsIHNpbmNlIHRoZSAxOTIwcy4gQSsgQkJCLiA0Ljkgc3RhcnMgKDM4NCsgR29vZ2xlIHJldmlld3MpLiBMaWNlbnNlZCArIGluc3VyZWQuIEV2ZXJ5IHJlcGFpciByZXZpZXdlZCBvciBwZXJmb3JtZWQgYnkgYSBsaWNlbnNlZCBtYXN0ZXIgcGx1bWJlci4nDQogICAgICAgICAgICBdDQogICAgICAgIF0sDQogICAgICAgICd6aXBzJyA9PiBbDQogICAgICAgICAgICAnNjYyMDMnLA0KICAgICAgICAgICAgJzY2MjE2JywNCiAgICAgICAgICAgICc2NjIxNycsDQogICAgICAgICAgICAnNjYyMTgnLA0KICAgICAgICAgICAgJzY2MjI2Jw0KICAgICAgICBdDQogICAgXSwNCiAgICAncHJhaXJpZS12aWxsYWdlJyA9PiBbDQogICAgICAgICdjaXR5X25hbWUnID0+ICdQcmFpcmllIFZpbGxhZ2UnLA0KICAgICAgICAnY2l0eV9zbHVnJyA9PiAncHJhaXJpZS12aWxsYWdlJywNCiAgICAgICAgJ25laWdoYm9yaG9vZHMnID0+IFsNCiAgICAgICAgICAgICdQcmFpcmllIEhpbGxzJywNCiAgICAgICAgICAgICdQcmFpcmllIFJpZGdlJywNCiAgICAgICAgICAgICdQcmFpcmllIEZpZWxkcycsDQogICAgICAgICAgICAnUHJhaXJpZSBWaWxsYWdlJywNCiAgICAgICAgICAgICdOZXcgVmlsbGFnZSBBdCBQcmFpcmllIEhhdmVuJywNCiAgICAgICAgICAgICdTb21lcnNldCBIaWxscycsDQogICAgICAgICAgICAnTWlzc2lvbiBIaWxscycsDQogICAgICAgICAgICAnQ29yaW50aCcNCiAgICAgICAgXSwNCiAgICAgICAgJ25lYXJieV9jaXRpZXMnID0+IFsNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ092ZXJsYW5kIFBhcmsnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb3ZlcmxhbmQtcGFyaycNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPbGF0aGUnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb2xhdGhlJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0xlYXdvb2QnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVhd29vZCcNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdTaGF3bmVlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3NoYXduZWUnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTGVuZXhhJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlbmV4YScNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdNZXJyaWFtJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ21lcnJpYW0nDQogICAgICAgICAgICBdDQogICAgICAgIF0sDQogICAgICAgICdmYXEnID0+IFsNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBzZXJ2ZSBteSBQcmFpcmllIFZpbGxhZ2UgbmVpZ2hib3Job29kPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIFByYWlyaWUgVmlsbGFnZSBhbmQgZXZlcnkgWklQIGZyb20gNjYyMDYgdG8gNjYyMDggaWYgd2VcJ3JlIGNvdmVyaW5nIGFsbCAzIG9mIHRoZW0uIFByYWlyaWUgSGlsbHMsIFByYWlyaWUgUmlkZ2UsIFByYWlyaWUgRmllbGRzLCBQcmFpcmllIFZpbGxhZ2UsIGFuZCAyMCsgbW9yZS4gU2FtZS1kYXkgYWNyb3NzIGFsbCBvZiB0aGVtLicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdIb3cgZmFzdCBjYW4geW91IGdldCB0byBQcmFpcmllIFZpbGxhZ2U/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ0F2ZXJhZ2UgcmVzcG9uc2UgdGltZSBhY3Jvc3MgUHJhaXJpZSBWaWxsYWdlIGlzIDYwIG1pbnV0ZXMuIEVtZXJnZW5jeT8gQ2FsbCAoOTEzKSA5NjMtMTAyOSBhbmQgYSBkaXNwYXRjaGVyIHBpY2tzIHVwIGluIDE1IHNlY29uZHMsIDI0LzcuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0FyZSB5b3UgbGljZW5zZWQgaW4gSm9obnNvbiBDb3VudHk/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgbGljZW5zZWQsIGluc3VyZWQsIGFuZCBib25kZWQuIFdlXCd2ZSBoZWxkIG91ciBtYXN0ZXIgcGx1bWJlciBsaWNlbnNlIGluIEpvaG5zb24gQ291bnR5IGZvciA1IGdlbmVyYXRpb25zLiBOb3QgYSBuYXRpb25hbCBmcmFuY2hpc2Ug4oCUIGEgZmFtaWx5IGJ1c2luZXNzIHdpdGggb3VyIEhRIGF0IDEyMDIyIEJsdWUgVmFsbGV5IFBrd3ksIE92ZXJsYW5kIFBhcmssIEtTIDY2MjEzLicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdIb3cgbXVjaCBkb2VzIGEgc2VydmljZSBjYWxsIGNvc3Q/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ1VwZnJvbnQgZmxhdC1yYXRlIHByaWNpbmcgYmVmb3JlIGFueSB3b3JrIHN0YXJ0cy4gTm8gaG91cmx5IHN1cnByaXNlcy4gU2VydmljZSBjYWxsIGZlZSBpcyB3YWl2ZWQgd2hlbiB5b3UgYXBwcm92ZSB0aGUgcmVwYWlyLiBGcmVlIGVzdGltYXRlcyBvbiBtYWpvciB3b3JrLicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdEbyB5b3Ugb2ZmZXIgZmluYW5jaW5nPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIDAlIEFQUiBmb3IgMTIgbW9udGhzIG9uIHF1YWxpZmllZCBpbnN0YWxscyAod2F0ZXIgaGVhdGVycywgc2V3ZXIgcmVwbGFjZW1lbnQsIHN1bXAgcHVtcHMpLiBQbHVzIDYvMTIvMTgtbW9udGggcGxhbnMgdGhyb3VnaCBXaXNldGFjay4gQXNrIHlvdXIgdGVjaCBvbi1zaXRlLicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdXaHkgc2hvdWxkIFByYWlyaWUgVmlsbGFnZSBob21lb3duZXJzIHRydXN0IEJyaWdodCBTaWRlIFBsdW1iaW5nPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICc1IGdlbmVyYXRpb25zIG9mIHBsdW1iZXJzIOKAlCBzYW1lIGZhbWlseSwgc2FtZSBPdmVybGFuZCBQYXJrIEhRLCBzaW5jZSB0aGUgMTkyMHMuIEErIEJCQi4gNC45IHN0YXJzICgzODQrIEdvb2dsZSByZXZpZXdzKS4gTGljZW5zZWQgKyBpbnN1cmVkLiBFdmVyeSByZXBhaXIgcmV2aWV3ZWQgb3IgcGVyZm9ybWVkIGJ5IGEgbGljZW5zZWQgbWFzdGVyIHBsdW1iZXIuJw0KICAgICAgICAgICAgXQ0KICAgICAgICBdLA0KICAgICAgICAnemlwcycgPT4gWw0KICAgICAgICAgICAgJzY2MjA2JywNCiAgICAgICAgICAgICc2NjIwNycsDQogICAgICAgICAgICAnNjYyMDgnDQogICAgICAgIF0NCiAgICBdLA0KICAgICdrYW5zYXMtY2l0eScgPT4gWw0KICAgICAgICAnY2l0eV9uYW1lJyA9PiAnS2Fuc2FzIENpdHknLA0KICAgICAgICAnY2l0eV9zbHVnJyA9PiAna2Fuc2FzLWNpdHknLA0KICAgICAgICAnbmVpZ2hib3Job29kcycgPT4gWw0KICAgICAgICAgICAgJ1Jvc2VkYWxlJywNCiAgICAgICAgICAgICdWaWN0b3J5IEhpbGxzJywNCiAgICAgICAgICAgICdNdW5jaWUnLA0KICAgICAgICAgICAgJ05lYXJtYW4gSGlsbHMnLA0KICAgICAgICAgICAgJ0ktNDM1IFdlc3QgS0MtS1MnDQogICAgICAgIF0sDQogICAgICAgICduZWFyYnlfY2l0aWVzJyA9PiBbDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPdmVybGFuZCBQYXJrJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ292ZXJsYW5kLXBhcmsnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnT2xhdGhlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ29sYXRoZScNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZWF3b29kJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlYXdvb2QnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnU2hhd25lZScsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdzaGF3bmVlJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1ByYWlyaWUgVmlsbGFnZScsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdwcmFpcmllLXZpbGxhZ2UnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTGVuZXhhJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlbmV4YScNCiAgICAgICAgICAgIF0NCiAgICAgICAgXSwNCiAgICAgICAgJ2ZhcScgPT4gWw0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IHNlcnZlIG15IEthbnNhcyBDaXR5IG5laWdoYm9yaG9vZD8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCBLYW5zYXMgQ2l0eSBhbmQgZXZlcnkgWklQIGZyb20gNjQxMDggdG8gNjYxMTIgaWYgd2VcJ3JlIGNvdmVyaW5nIGFsbCAxNiBvZiB0aGVtLiBSb3NlZGFsZSwgVmljdG9yeSBIaWxscywgTXVuY2llLCBOZWFybWFuIEhpbGxzLCBhbmQgMjArIG1vcmUuIFNhbWUtZGF5IGFjcm9zcyBhbGwgb2YgdGhlbS4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IGZhc3QgY2FuIHlvdSBnZXQgdG8gS2Fuc2FzIENpdHk/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ0F2ZXJhZ2UgcmVzcG9uc2UgdGltZSBhY3Jvc3MgS2Fuc2FzIENpdHkgaXMgNjAgbWludXRlcy4gRW1lcmdlbmN5PyBDYWxsICg5MTMpIDk2My0xMDI5IGFuZCBhIGRpc3BhdGNoZXIgcGlja3MgdXAgaW4gMTUgc2Vjb25kcywgMjQvNy4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnQXJlIHlvdSBsaWNlbnNlZCBpbiBXeWFuZG90dGUvSmFja3NvbiBDb3VudHk/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgbGljZW5zZWQsIGluc3VyZWQsIGFuZCBib25kZWQuIFdlXCd2ZSBoZWxkIG91ciBtYXN0ZXIgcGx1bWJlciBsaWNlbnNlIGluIFd5YW5kb3R0ZS9KYWNrc29uIENvdW50eSBmb3IgNSBnZW5lcmF0aW9ucy4gTm90IGEgbmF0aW9uYWwgZnJhbmNoaXNlIOKAlCBhIGZhbWlseSBidXNpbmVzcyB3aXRoIG91ciBIUSBhdCAxMjAyMiBCbHVlIFZhbGxleSBQa3d5LCBPdmVybGFuZCBQYXJrLCBLUyA2NjIxMy4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IG11Y2ggZG9lcyBhIHNlcnZpY2UgY2FsbCBjb3N0PycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdVcGZyb250IGZsYXQtcmF0ZSBwcmljaW5nIGJlZm9yZSBhbnkgd29yayBzdGFydHMuIE5vIGhvdXJseSBzdXJwcmlzZXMuIFNlcnZpY2UgY2FsbCBmZWUgaXMgd2FpdmVkIHdoZW4geW91IGFwcHJvdmUgdGhlIHJlcGFpci4gRnJlZSBlc3RpbWF0ZXMgb24gbWFqb3Igd29yay4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IG9mZmVyIGZpbmFuY2luZz8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCAwJSBBUFIgZm9yIDEyIG1vbnRocyBvbiBxdWFsaWZpZWQgaW5zdGFsbHMgKHdhdGVyIGhlYXRlcnMsIHNld2VyIHJlcGxhY2VtZW50LCBzdW1wIHB1bXBzKS4gUGx1cyA2LzEyLzE4LW1vbnRoIHBsYW5zIHRocm91Z2ggV2lzZXRhY2suIEFzayB5b3VyIHRlY2ggb24tc2l0ZS4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnV2h5IHNob3VsZCBLYW5zYXMgQ2l0eSBob21lb3duZXJzIHRydXN0IEJyaWdodCBTaWRlIFBsdW1iaW5nPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICc1IGdlbmVyYXRpb25zIG9mIHBsdW1iZXJzIOKAlCBzYW1lIGZhbWlseSwgc2FtZSBPdmVybGFuZCBQYXJrIEhRLCBzaW5jZSB0aGUgMTkyMHMuIEErIEJCQi4gNC45IHN0YXJzICgzODQrIEdvb2dsZSByZXZpZXdzKS4gTGljZW5zZWQgKyBpbnN1cmVkLiBFdmVyeSByZXBhaXIgcmV2aWV3ZWQgb3IgcGVyZm9ybWVkIGJ5IGEgbGljZW5zZWQgbWFzdGVyIHBsdW1iZXIuJw0KICAgICAgICAgICAgXQ0KICAgICAgICBdLA0KICAgICAgICAnemlwcycgPT4gWw0KICAgICAgICAgICAgJzY0MTA4JywNCiAgICAgICAgICAgICc2NDEwOScsDQogICAgICAgICAgICAnNjQxMTAnLA0KICAgICAgICAgICAgJzY0MTExJywNCiAgICAgICAgICAgICc2NDExMicsDQogICAgICAgICAgICAnNjQxMTMnLA0KICAgICAgICAgICAgJzY0MTE0JywNCiAgICAgICAgICAgICc2NDEzMicsDQogICAgICAgICAgICAnNjYxMDEnLA0KICAgICAgICAgICAgJzY2MTAyJywNCiAgICAgICAgICAgICc2NjEwMycsDQogICAgICAgICAgICAnNjYxMDQnLA0KICAgICAgICAgICAgJzY2MTA1JywNCiAgICAgICAgICAgICc2NjEwNicsDQogICAgICAgICAgICAnNjYxMDknLA0KICAgICAgICAgICAgJzY2MTEyJw0KICAgICAgICBdDQogICAgXSwNCiAgICAnbWVycmlhbScgPT4gWw0KICAgICAgICAnY2l0eV9uYW1lJyA9PiAnTWVycmlhbScsDQogICAgICAgICdjaXR5X3NsdWcnID0+ICdtZXJyaWFtJywNCiAgICAgICAgJ25laWdoYm9yaG9vZHMnID0+IFsNCiAgICAgICAgICAgICdIb2NrZXIgR3JvdmUnLA0KICAgICAgICAgICAgJ0tpbmdzIENvdmUnLA0KICAgICAgICAgICAgJ01pbGJ1cm4gV2VzdCcsDQogICAgICAgICAgICAnTWVycmlhbSBHcm92ZScsDQogICAgICAgICAgICAnV2VzdCBWZXJub24gUGxhY2UnLA0KICAgICAgICAgICAgJ093ZW4gSGVpZ2h0cycsDQogICAgICAgICAgICAnQW50aW9jaCBIaWxscycNCiAgICAgICAgXSwNCiAgICAgICAgJ25lYXJieV9jaXRpZXMnID0+IFsNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ092ZXJsYW5kIFBhcmsnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb3ZlcmxhbmQtcGFyaycNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPbGF0aGUnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb2xhdGhlJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0xlYXdvb2QnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVhd29vZCcNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdTaGF3bmVlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3NoYXduZWUnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnUHJhaXJpZSBWaWxsYWdlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3ByYWlyaWUtdmlsbGFnZScNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZW5leGEnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVuZXhhJw0KICAgICAgICAgICAgXQ0KICAgICAgICBdLA0KICAgICAgICAnZmFxJyA9PiBbDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdEbyB5b3Ugc2VydmUgbXkgTWVycmlhbSBuZWlnaGJvcmhvb2Q/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgTWVycmlhbSBhbmQgZXZlcnkgWklQIGZyb20gNjYyMDMgdG8gNjYyMDQgaWYgd2VcJ3JlIGNvdmVyaW5nIGFsbCAyIG9mIHRoZW0uIEhvY2tlciBHcm92ZSwgS2luZ3MgQ292ZSwgTWlsYnVybiBXZXN0LCBNZXJyaWFtIEdyb3ZlLCBhbmQgMjArIG1vcmUuIFNhbWUtZGF5IGFjcm9zcyBhbGwgb2YgdGhlbS4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IGZhc3QgY2FuIHlvdSBnZXQgdG8gTWVycmlhbT8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnQXZlcmFnZSByZXNwb25zZSB0aW1lIGFjcm9zcyBNZXJyaWFtIGlzIDYwIG1pbnV0ZXMuIEVtZXJnZW5jeT8gQ2FsbCAoOTEzKSA5NjMtMTAyOSBhbmQgYSBkaXNwYXRjaGVyIHBpY2tzIHVwIGluIDE1IHNlY29uZHMsIDI0LzcuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0FyZSB5b3UgbGljZW5zZWQgaW4gSm9obnNvbiBDb3VudHk/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgbGljZW5zZWQsIGluc3VyZWQsIGFuZCBib25kZWQuIFdlXCd2ZSBoZWxkIG91ciBtYXN0ZXIgcGx1bWJlciBsaWNlbnNlIGluIEpvaG5zb24gQ291bnR5IGZvciA1IGdlbmVyYXRpb25zLiBOb3QgYSBuYXRpb25hbCBmcmFuY2hpc2Ug4oCUIGEgZmFtaWx5IGJ1c2luZXNzIHdpdGggb3VyIEhRIGF0IDEyMDIyIEJsdWUgVmFsbGV5IFBrd3ksIE92ZXJsYW5kIFBhcmssIEtTIDY2MjEzLicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdIb3cgbXVjaCBkb2VzIGEgc2VydmljZSBjYWxsIGNvc3Q/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ1VwZnJvbnQgZmxhdC1yYXRlIHByaWNpbmcgYmVmb3JlIGFueSB3b3JrIHN0YXJ0cy4gTm8gaG91cmx5IHN1cnByaXNlcy4gU2VydmljZSBjYWxsIGZlZSBpcyB3YWl2ZWQgd2hlbiB5b3UgYXBwcm92ZSB0aGUgcmVwYWlyLiBGcmVlIGVzdGltYXRlcyBvbiBtYWpvciB3b3JrLicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdEbyB5b3Ugb2ZmZXIgZmluYW5jaW5nPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIDAlIEFQUiBmb3IgMTIgbW9udGhzIG9uIHF1YWxpZmllZCBpbnN0YWxscyAod2F0ZXIgaGVhdGVycywgc2V3ZXIgcmVwbGFjZW1lbnQsIHN1bXAgcHVtcHMpLiBQbHVzIDYvMTIvMTgtbW9udGggcGxhbnMgdGhyb3VnaCBXaXNldGFjay4gQXNrIHlvdXIgdGVjaCBvbi1zaXRlLicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdXaHkgc2hvdWxkIE1lcnJpYW0gaG9tZW93bmVycyB0cnVzdCBCcmlnaHQgU2lkZSBQbHVtYmluZz8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnNSBnZW5lcmF0aW9ucyBvZiBwbHVtYmVycyDigJQgc2FtZSBmYW1pbHksIHNhbWUgT3ZlcmxhbmQgUGFyayBIUSwgc2luY2UgdGhlIDE5MjBzLiBBKyBCQkIuIDQuOSBzdGFycyAoMzg0KyBHb29nbGUgcmV2aWV3cykuIExpY2Vuc2VkICsgaW5zdXJlZC4gRXZlcnkgcmVwYWlyIHJldmlld2VkIG9yIHBlcmZvcm1lZCBieSBhIGxpY2Vuc2VkIG1hc3RlciBwbHVtYmVyLicNCiAgICAgICAgICAgIF0NCiAgICAgICAgXSwNCiAgICAgICAgJ3ppcHMnID0+IFsNCiAgICAgICAgICAgICc2NjIwMycsDQogICAgICAgICAgICAnNjYyMDQnDQogICAgICAgIF0NCiAgICBdLA0KICAgICdtaXNzaW9uJyA9PiBbDQogICAgICAgICdjaXR5X25hbWUnID0+ICdNaXNzaW9uJywNCiAgICAgICAgJ2NpdHlfc2x1ZycgPT4gJ21pc3Npb24nLA0KICAgICAgICAnbmVpZ2hib3Job29kcycgPT4gWw0KICAgICAgICAgICAgJ1Jvc2VsYW5kIFBhcmsnLA0KICAgICAgICAgICAgJ0Jyb2FkbW9vcicsDQogICAgICAgICAgICAnQ291bnRyeXNpZGUnLA0KICAgICAgICAgICAgJ01pc3Npb24gV29vZHMnLA0KICAgICAgICAgICAgJ0luZGlhbiBIaWxscycsDQogICAgICAgICAgICAnUm9jayBDcmVlaycNCiAgICAgICAgXSwNCiAgICAgICAgJ25lYXJieV9jaXRpZXMnID0+IFsNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ092ZXJsYW5kIFBhcmsnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb3ZlcmxhbmQtcGFyaycNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPbGF0aGUnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb2xhdGhlJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0xlYXdvb2QnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVhd29vZCcNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdTaGF3bmVlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3NoYXduZWUnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnUHJhaXJpZSBWaWxsYWdlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3ByYWlyaWUtdmlsbGFnZScNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZW5leGEnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVuZXhhJw0KICAgICAgICAgICAgXQ0KICAgICAgICBdLA0KICAgICAgICAnZmFxJyA9PiBbDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdEbyB5b3Ugc2VydmUgbXkgTWlzc2lvbiBuZWlnaGJvcmhvb2Q/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgTWlzc2lvbiBhbmQgZXZlcnkgWklQIGZyb20gNjYyMDIgdG8gNjYyMDUgaWYgd2VcJ3JlIGNvdmVyaW5nIGFsbCAyIG9mIHRoZW0uIFJvc2VsYW5kIFBhcmssIEJyb2FkbW9vciwgQ291bnRyeXNpZGUsIE1pc3Npb24gV29vZHMsIGFuZCAyMCsgbW9yZS4gU2FtZS1kYXkgYWNyb3NzIGFsbCBvZiB0aGVtLicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdIb3cgZmFzdCBjYW4geW91IGdldCB0byBNaXNzaW9uPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdBdmVyYWdlIHJlc3BvbnNlIHRpbWUgYWNyb3NzIE1pc3Npb24gaXMgNjAgbWludXRlcy4gRW1lcmdlbmN5PyBDYWxsICg5MTMpIDk2My0xMDI5IGFuZCBhIGRpc3BhdGNoZXIgcGlja3MgdXAgaW4gMTUgc2Vjb25kcywgMjQvNy4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnQXJlIHlvdSBsaWNlbnNlZCBpbiBKb2huc29uIENvdW50eT8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCBsaWNlbnNlZCwgaW5zdXJlZCwgYW5kIGJvbmRlZC4gV2VcJ3ZlIGhlbGQgb3VyIG1hc3RlciBwbHVtYmVyIGxpY2Vuc2UgaW4gSm9obnNvbiBDb3VudHkgZm9yIDUgZ2VuZXJhdGlvbnMuIE5vdCBhIG5hdGlvbmFsIGZyYW5jaGlzZSDigJQgYSBmYW1pbHkgYnVzaW5lc3Mgd2l0aCBvdXIgSFEgYXQgMTIwMjIgQmx1ZSBWYWxsZXkgUGt3eSwgT3ZlcmxhbmQgUGFyaywgS1MgNjYyMTMuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBtdWNoIGRvZXMgYSBzZXJ2aWNlIGNhbGwgY29zdD8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnVXBmcm9udCBmbGF0LXJhdGUgcHJpY2luZyBiZWZvcmUgYW55IHdvcmsgc3RhcnRzLiBObyBob3VybHkgc3VycHJpc2VzLiBTZXJ2aWNlIGNhbGwgZmVlIGlzIHdhaXZlZCB3aGVuIHlvdSBhcHByb3ZlIHRoZSByZXBhaXIuIEZyZWUgZXN0aW1hdGVzIG9uIG1ham9yIHdvcmsuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBvZmZlciBmaW5hbmNpbmc/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgMCUgQVBSIGZvciAxMiBtb250aHMgb24gcXVhbGlmaWVkIGluc3RhbGxzICh3YXRlciBoZWF0ZXJzLCBzZXdlciByZXBsYWNlbWVudCwgc3VtcCBwdW1wcykuIFBsdXMgNi8xMi8xOC1tb250aCBwbGFucyB0aHJvdWdoIFdpc2V0YWNrLiBBc2sgeW91ciB0ZWNoIG9uLXNpdGUuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ1doeSBzaG91bGQgTWlzc2lvbiBob21lb3duZXJzIHRydXN0IEJyaWdodCBTaWRlIFBsdW1iaW5nPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICc1IGdlbmVyYXRpb25zIG9mIHBsdW1iZXJzIOKAlCBzYW1lIGZhbWlseSwgc2FtZSBPdmVybGFuZCBQYXJrIEhRLCBzaW5jZSB0aGUgMTkyMHMuIEErIEJCQi4gNC45IHN0YXJzICgzODQrIEdvb2dsZSByZXZpZXdzKS4gTGljZW5zZWQgKyBpbnN1cmVkLiBFdmVyeSByZXBhaXIgcmV2aWV3ZWQgb3IgcGVyZm9ybWVkIGJ5IGEgbGljZW5zZWQgbWFzdGVyIHBsdW1iZXIuJw0KICAgICAgICAgICAgXQ0KICAgICAgICBdLA0KICAgICAgICAnemlwcycgPT4gWw0KICAgICAgICAgICAgJzY2MjAyJywNCiAgICAgICAgICAgICc2NjIwNScNCiAgICAgICAgXQ0KICAgIF0sDQogICAgJ3NwcmluZy1oaWxsJyA9PiBbDQogICAgICAgICdjaXR5X25hbWUnID0+ICdTcHJpbmcgSGlsbCcsDQogICAgICAgICdjaXR5X3NsdWcnID0+ICdzcHJpbmctaGlsbCcsDQogICAgICAgICduZWlnaGJvcmhvb2RzJyA9PiBbDQogICAgICAgICAgICAnQnJvb2t3b29kIEZhcm1zJywNCiAgICAgICAgICAgICdXb29kbGFuZCBSaWRnZScsDQogICAgICAgICAgICAnRm94d29vZCBSYW5jaCcsDQogICAgICAgICAgICAnRGF5dG9uIENyZWVrJywNCiAgICAgICAgICAgICdCb3VsZGVyIFNwcmluZ3MnLA0KICAgICAgICAgICAgJ1dvbGYgQ3JlZWsgRXN0YXRlcycNCiAgICAgICAgXSwNCiAgICAgICAgJ25lYXJieV9jaXRpZXMnID0+IFsNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ092ZXJsYW5kIFBhcmsnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb3ZlcmxhbmQtcGFyaycNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPbGF0aGUnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb2xhdGhlJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0xlYXdvb2QnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVhd29vZCcNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdTaGF3bmVlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3NoYXduZWUnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnUHJhaXJpZSBWaWxsYWdlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3ByYWlyaWUtdmlsbGFnZScNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZW5leGEnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVuZXhhJw0KICAgICAgICAgICAgXQ0KICAgICAgICBdLA0KICAgICAgICAnZmFxJyA9PiBbDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdEbyB5b3Ugc2VydmUgbXkgU3ByaW5nIEhpbGwgbmVpZ2hib3Job29kPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIFNwcmluZyBIaWxsIGFuZCBldmVyeSBaSVAgZnJvbSA2NjA4MyB0byA2NjA4MyBpZiB3ZVwncmUgY292ZXJpbmcgYWxsIDEgb2YgdGhlbS4gQnJvb2t3b29kIEZhcm1zLCBXb29kbGFuZCBSaWRnZSwgRm94d29vZCBSYW5jaCwgRGF5dG9uIENyZWVrLCBhbmQgMjArIG1vcmUuIFNhbWUtZGF5IGFjcm9zcyBhbGwgb2YgdGhlbS4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IGZhc3QgY2FuIHlvdSBnZXQgdG8gU3ByaW5nIEhpbGw/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ0F2ZXJhZ2UgcmVzcG9uc2UgdGltZSBhY3Jvc3MgU3ByaW5nIEhpbGwgaXMgNjAgbWludXRlcy4gRW1lcmdlbmN5PyBDYWxsICg5MTMpIDk2My0xMDI5IGFuZCBhIGRpc3BhdGNoZXIgcGlja3MgdXAgaW4gMTUgc2Vjb25kcywgMjQvNy4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnQXJlIHlvdSBsaWNlbnNlZCBpbiBKb2huc29uIENvdW50eT8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCBsaWNlbnNlZCwgaW5zdXJlZCwgYW5kIGJvbmRlZC4gV2VcJ3ZlIGhlbGQgb3VyIG1hc3RlciBwbHVtYmVyIGxpY2Vuc2UgaW4gSm9obnNvbiBDb3VudHkgZm9yIDUgZ2VuZXJhdGlvbnMuIE5vdCBhIG5hdGlvbmFsIGZyYW5jaGlzZSDigJQgYSBmYW1pbHkgYnVzaW5lc3Mgd2l0aCBvdXIgSFEgYXQgMTIwMjIgQmx1ZSBWYWxsZXkgUGt3eSwgT3ZlcmxhbmQgUGFyaywgS1MgNjYyMTMuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBtdWNoIGRvZXMgYSBzZXJ2aWNlIGNhbGwgY29zdD8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnVXBmcm9udCBmbGF0LXJhdGUgcHJpY2luZyBiZWZvcmUgYW55IHdvcmsgc3RhcnRzLiBObyBob3VybHkgc3VycHJpc2VzLiBTZXJ2aWNlIGNhbGwgZmVlIGlzIHdhaXZlZCB3aGVuIHlvdSBhcHByb3ZlIHRoZSByZXBhaXIuIEZyZWUgZXN0aW1hdGVzIG9uIG1ham9yIHdvcmsuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBvZmZlciBmaW5hbmNpbmc/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgMCUgQVBSIGZvciAxMiBtb250aHMgb24gcXVhbGlmaWVkIGluc3RhbGxzICh3YXRlciBoZWF0ZXJzLCBzZXdlciByZXBsYWNlbWVudCwgc3VtcCBwdW1wcykuIFBsdXMgNi8xMi8xOC1tb250aCBwbGFucyB0aHJvdWdoIFdpc2V0YWNrLiBBc2sgeW91ciB0ZWNoIG9uLXNpdGUuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ1doeSBzaG91bGQgU3ByaW5nIEhpbGwgaG9tZW93bmVycyB0cnVzdCBCcmlnaHQgU2lkZSBQbHVtYmluZz8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnNSBnZW5lcmF0aW9ucyBvZiBwbHVtYmVycyDigJQgc2FtZSBmYW1pbHksIHNhbWUgT3ZlcmxhbmQgUGFyayBIUSwgc2luY2UgdGhlIDE5MjBzLiBBKyBCQkIuIDQuOSBzdGFycyAoMzg0KyBHb29nbGUgcmV2aWV3cykuIExpY2Vuc2VkICsgaW5zdXJlZC4gRXZlcnkgcmVwYWlyIHJldmlld2VkIG9yIHBlcmZvcm1lZCBieSBhIGxpY2Vuc2VkIG1hc3RlciBwbHVtYmVyLicNCiAgICAgICAgICAgIF0NCiAgICAgICAgXSwNCiAgICAgICAgJ3ppcHMnID0+IFsNCiAgICAgICAgICAgICc2NjA4MycNCiAgICAgICAgXQ0KICAgIF0sDQogICAgJ3N0aWx3ZWxsJyA9PiBbDQogICAgICAgICdjaXR5X25hbWUnID0+ICdTdGlsd2VsbCcsDQogICAgICAgICdjaXR5X3NsdWcnID0+ICdzdGlsd2VsbCcsDQogICAgICAgICduZWlnaGJvcmhvb2RzJyA9PiBbDQogICAgICAgICAgICAnTWlsbHMgRmFybScsDQogICAgICAgICAgICAnVGVycnlicm9vayBGYXJtcycsDQogICAgICAgICAgICAnV2lsZHdvb2QgRXN0YXRlcycsDQogICAgICAgICAgICAnQmx1ZSBWYWxsZXkgSGVpZ2h0cycsDQogICAgICAgICAgICAnTWV0Y2FsZiBNZWFkb3dzJywNCiAgICAgICAgICAgICdNaXNzaW9uIEZhbGxzIEVzdGF0ZXMnDQogICAgICAgIF0sDQogICAgICAgICduZWFyYnlfY2l0aWVzJyA9PiBbDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPdmVybGFuZCBQYXJrJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ292ZXJsYW5kLXBhcmsnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnT2xhdGhlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ29sYXRoZScNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZWF3b29kJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlYXdvb2QnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnU2hhd25lZScsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdzaGF3bmVlJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1ByYWlyaWUgVmlsbGFnZScsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdwcmFpcmllLXZpbGxhZ2UnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTGVuZXhhJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlbmV4YScNCiAgICAgICAgICAgIF0NCiAgICAgICAgXSwNCiAgICAgICAgJ2ZhcScgPT4gWw0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IHNlcnZlIG15IFN0aWx3ZWxsIG5laWdoYm9yaG9vZD8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCBTdGlsd2VsbCBhbmQgZXZlcnkgWklQIGZyb20gNjYwODUgdG8gNjYwODUgaWYgd2VcJ3JlIGNvdmVyaW5nIGFsbCAxIG9mIHRoZW0uIE1pbGxzIEZhcm0sIFRlcnJ5YnJvb2sgRmFybXMsIFdpbGR3b29kIEVzdGF0ZXMsIEJsdWUgVmFsbGV5IEhlaWdodHMsIGFuZCAyMCsgbW9yZS4gU2FtZS1kYXkgYWNyb3NzIGFsbCBvZiB0aGVtLicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdIb3cgZmFzdCBjYW4geW91IGdldCB0byBTdGlsd2VsbD8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnQXZlcmFnZSByZXNwb25zZSB0aW1lIGFjcm9zcyBTdGlsd2VsbCBpcyA2MCBtaW51dGVzLiBFbWVyZ2VuY3k/IENhbGwgKDkxMykgOTYzLTEwMjkgYW5kIGEgZGlzcGF0Y2hlciBwaWNrcyB1cCBpbiAxNSBzZWNvbmRzLCAyNC83LicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdBcmUgeW91IGxpY2Vuc2VkIGluIEpvaG5zb24gQ291bnR5PycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIGxpY2Vuc2VkLCBpbnN1cmVkLCBhbmQgYm9uZGVkLiBXZVwndmUgaGVsZCBvdXIgbWFzdGVyIHBsdW1iZXIgbGljZW5zZSBpbiBKb2huc29uIENvdW50eSBmb3IgNSBnZW5lcmF0aW9ucy4gTm90IGEgbmF0aW9uYWwgZnJhbmNoaXNlIOKAlCBhIGZhbWlseSBidXNpbmVzcyB3aXRoIG91ciBIUSBhdCAxMjAyMiBCbHVlIFZhbGxleSBQa3d5LCBPdmVybGFuZCBQYXJrLCBLUyA2NjIxMy4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IG11Y2ggZG9lcyBhIHNlcnZpY2UgY2FsbCBjb3N0PycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdVcGZyb250IGZsYXQtcmF0ZSBwcmljaW5nIGJlZm9yZSBhbnkgd29yayBzdGFydHMuIE5vIGhvdXJseSBzdXJwcmlzZXMuIFNlcnZpY2UgY2FsbCBmZWUgaXMgd2FpdmVkIHdoZW4geW91IGFwcHJvdmUgdGhlIHJlcGFpci4gRnJlZSBlc3RpbWF0ZXMgb24gbWFqb3Igd29yay4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IG9mZmVyIGZpbmFuY2luZz8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCAwJSBBUFIgZm9yIDEyIG1vbnRocyBvbiBxdWFsaWZpZWQgaW5zdGFsbHMgKHdhdGVyIGhlYXRlcnMsIHNld2VyIHJlcGxhY2VtZW50LCBzdW1wIHB1bXBzKS4gUGx1cyA2LzEyLzE4LW1vbnRoIHBsYW5zIHRocm91Z2ggV2lzZXRhY2suIEFzayB5b3VyIHRlY2ggb24tc2l0ZS4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnV2h5IHNob3VsZCBTdGlsd2VsbCBob21lb3duZXJzIHRydXN0IEJyaWdodCBTaWRlIFBsdW1iaW5nPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICc1IGdlbmVyYXRpb25zIG9mIHBsdW1iZXJzIOKAlCBzYW1lIGZhbWlseSwgc2FtZSBPdmVybGFuZCBQYXJrIEhRLCBzaW5jZSB0aGUgMTkyMHMuIEErIEJCQi4gNC45IHN0YXJzICgzODQrIEdvb2dsZSByZXZpZXdzKS4gTGljZW5zZWQgKyBpbnN1cmVkLiBFdmVyeSByZXBhaXIgcmV2aWV3ZWQgb3IgcGVyZm9ybWVkIGJ5IGEgbGljZW5zZWQgbWFzdGVyIHBsdW1iZXIuJw0KICAgICAgICAgICAgXQ0KICAgICAgICBdLA0KICAgICAgICAnemlwcycgPT4gWw0KICAgICAgICAgICAgJzY2MDg1Jw0KICAgICAgICBdDQogICAgXSwNCiAgICAnYm9ubmVyLXNwcmluZ3MnID0+IFsNCiAgICAgICAgJ2NpdHlfbmFtZScgPT4gJ0Jvbm5lciBTcHJpbmdzJywNCiAgICAgICAgJ2NpdHlfc2x1ZycgPT4gJ2Jvbm5lci1zcHJpbmdzJywNCiAgICAgICAgJ25laWdoYm9yaG9vZHMnID0+IFsNCiAgICAgICAgICAgICdDZWRhciBSaWRnZScsDQogICAgICAgICAgICAnQ2VkYXIgU3ByaW5ncycsDQogICAgICAgICAgICAnQ290dGFnZXMgb2YgQ2VkYXIgU3ByaW5ncycsDQogICAgICAgICAgICAnTGVpIFZhbGxleScNCiAgICAgICAgXSwNCiAgICAgICAgJ25lYXJieV9jaXRpZXMnID0+IFsNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ092ZXJsYW5kIFBhcmsnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb3ZlcmxhbmQtcGFyaycNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPbGF0aGUnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnb2xhdGhlJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0xlYXdvb2QnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVhd29vZCcNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdTaGF3bmVlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3NoYXduZWUnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnUHJhaXJpZSBWaWxsYWdlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ3ByYWlyaWUtdmlsbGFnZScNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZW5leGEnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnbGVuZXhhJw0KICAgICAgICAgICAgXQ0KICAgICAgICBdLA0KICAgICAgICAnZmFxJyA9PiBbDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdEbyB5b3Ugc2VydmUgbXkgQm9ubmVyIFNwcmluZ3MgbmVpZ2hib3Job29kPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIEJvbm5lciBTcHJpbmdzIGFuZCBldmVyeSBaSVAgZnJvbSA2NjAxMiB0byA2NjAxMiBpZiB3ZVwncmUgY292ZXJpbmcgYWxsIDEgb2YgdGhlbS4gQ2VkYXIgUmlkZ2UsIENlZGFyIFNwcmluZ3MsIENvdHRhZ2VzIG9mIENlZGFyIFNwcmluZ3MsIExlaSBWYWxsZXksIGFuZCAyMCsgbW9yZS4gU2FtZS1kYXkgYWNyb3NzIGFsbCBvZiB0aGVtLicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdIb3cgZmFzdCBjYW4geW91IGdldCB0byBCb25uZXIgU3ByaW5ncz8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnQXZlcmFnZSByZXNwb25zZSB0aW1lIGFjcm9zcyBCb25uZXIgU3ByaW5ncyBpcyA2MCBtaW51dGVzLiBFbWVyZ2VuY3k/IENhbGwgKDkxMykgOTYzLTEwMjkgYW5kIGEgZGlzcGF0Y2hlciBwaWNrcyB1cCBpbiAxNSBzZWNvbmRzLCAyNC83LicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdBcmUgeW91IGxpY2Vuc2VkIGluIFd5YW5kb3R0ZSBDb3VudHk/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgbGljZW5zZWQsIGluc3VyZWQsIGFuZCBib25kZWQuIFdlXCd2ZSBoZWxkIG91ciBtYXN0ZXIgcGx1bWJlciBsaWNlbnNlIGluIFd5YW5kb3R0ZSBDb3VudHkgZm9yIDUgZ2VuZXJhdGlvbnMuIE5vdCBhIG5hdGlvbmFsIGZyYW5jaGlzZSDigJQgYSBmYW1pbHkgYnVzaW5lc3Mgd2l0aCBvdXIgSFEgYXQgMTIwMjIgQmx1ZSBWYWxsZXkgUGt3eSwgT3ZlcmxhbmQgUGFyaywgS1MgNjYyMTMuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBtdWNoIGRvZXMgYSBzZXJ2aWNlIGNhbGwgY29zdD8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnVXBmcm9udCBmbGF0LXJhdGUgcHJpY2luZyBiZWZvcmUgYW55IHdvcmsgc3RhcnRzLiBObyBob3VybHkgc3VycHJpc2VzLiBTZXJ2aWNlIGNhbGwgZmVlIGlzIHdhaXZlZCB3aGVuIHlvdSBhcHByb3ZlIHRoZSByZXBhaXIuIEZyZWUgZXN0aW1hdGVzIG9uIG1ham9yIHdvcmsuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBvZmZlciBmaW5hbmNpbmc/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgMCUgQVBSIGZvciAxMiBtb250aHMgb24gcXVhbGlmaWVkIGluc3RhbGxzICh3YXRlciBoZWF0ZXJzLCBzZXdlciByZXBsYWNlbWVudCwgc3VtcCBwdW1wcykuIFBsdXMgNi8xMi8xOC1tb250aCBwbGFucyB0aHJvdWdoIFdpc2V0YWNrLiBBc2sgeW91ciB0ZWNoIG9uLXNpdGUuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ1doeSBzaG91bGQgQm9ubmVyIFNwcmluZ3MgaG9tZW93bmVycyB0cnVzdCBCcmlnaHQgU2lkZSBQbHVtYmluZz8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnNSBnZW5lcmF0aW9ucyBvZiBwbHVtYmVycyDigJQgc2FtZSBmYW1pbHksIHNhbWUgT3ZlcmxhbmQgUGFyayBIUSwgc2luY2UgdGhlIDE5MjBzLiBBKyBCQkIuIDQuOSBzdGFycyAoMzg0KyBHb29nbGUgcmV2aWV3cykuIExpY2Vuc2VkICsgaW5zdXJlZC4gRXZlcnkgcmVwYWlyIHJldmlld2VkIG9yIHBlcmZvcm1lZCBieSBhIGxpY2Vuc2VkIG1hc3RlciBwbHVtYmVyLicNCiAgICAgICAgICAgIF0NCiAgICAgICAgXSwNCiAgICAgICAgJ3ppcHMnID0+IFsNCiAgICAgICAgICAgICc2NjAxMicNCiAgICAgICAgXQ0KICAgIF0sDQogICAgJ2dhcmRuZXInID0+IFsNCiAgICAgICAgJ2NpdHlfbmFtZScgPT4gJ0dhcmRuZXInLA0KICAgICAgICAnY2l0eV9zbHVnJyA9PiAnZ2FyZG5lcicsDQogICAgICAgICduZWlnaGJvcmhvb2RzJyA9PiBbDQogICAgICAgICAgICAnUHJhaXJpZSBUcmFjZScsDQogICAgICAgICAgICAnU3ltcGhvbnkgRmFybXMnLA0KICAgICAgICAgICAgJ0NvcHBlciBTcHJpbmdzJywNCiAgICAgICAgICAgICdHZW5lc2lzIENyZWVrIEVzdGF0ZXMnLA0KICAgICAgICAgICAgJ1B1bXBraW4gUmlkZ2UnLA0KICAgICAgICAgICAgJ1R1c2NhbnkgVmlsbGFnZScsDQogICAgICAgICAgICAnV2lsbG93IFNwcmluZ3MnDQogICAgICAgIF0sDQogICAgICAgICduZWFyYnlfY2l0aWVzJyA9PiBbDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPdmVybGFuZCBQYXJrJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ292ZXJsYW5kLXBhcmsnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnT2xhdGhlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ29sYXRoZScNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZWF3b29kJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlYXdvb2QnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnU2hhd25lZScsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdzaGF3bmVlJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1ByYWlyaWUgVmlsbGFnZScsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdwcmFpcmllLXZpbGxhZ2UnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTGVuZXhhJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlbmV4YScNCiAgICAgICAgICAgIF0NCiAgICAgICAgXSwNCiAgICAgICAgJ2ZhcScgPT4gWw0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IHNlcnZlIG15IEdhcmRuZXIgbmVpZ2hib3Job29kPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIEdhcmRuZXIgYW5kIGV2ZXJ5IFpJUCBmcm9tIDY2MDMwIHRvIDY2MDMwIGlmIHdlXCdyZSBjb3ZlcmluZyBhbGwgMSBvZiB0aGVtLiBQcmFpcmllIFRyYWNlLCBTeW1waG9ueSBGYXJtcywgQ29wcGVyIFNwcmluZ3MsIEdlbmVzaXMgQ3JlZWsgRXN0YXRlcywgYW5kIDIwKyBtb3JlLiBTYW1lLWRheSBhY3Jvc3MgYWxsIG9mIHRoZW0uJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBmYXN0IGNhbiB5b3UgZ2V0IHRvIEdhcmRuZXI/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ0F2ZXJhZ2UgcmVzcG9uc2UgdGltZSBhY3Jvc3MgR2FyZG5lciBpcyA2MCBtaW51dGVzLiBFbWVyZ2VuY3k/IENhbGwgKDkxMykgOTYzLTEwMjkgYW5kIGEgZGlzcGF0Y2hlciBwaWNrcyB1cCBpbiAxNSBzZWNvbmRzLCAyNC83LicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdBcmUgeW91IGxpY2Vuc2VkIGluIEpvaG5zb24gQ291bnR5PycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIGxpY2Vuc2VkLCBpbnN1cmVkLCBhbmQgYm9uZGVkLiBXZVwndmUgaGVsZCBvdXIgbWFzdGVyIHBsdW1iZXIgbGljZW5zZSBpbiBKb2huc29uIENvdW50eSBmb3IgNSBnZW5lcmF0aW9ucy4gTm90IGEgbmF0aW9uYWwgZnJhbmNoaXNlIOKAlCBhIGZhbWlseSBidXNpbmVzcyB3aXRoIG91ciBIUSBhdCAxMjAyMiBCbHVlIFZhbGxleSBQa3d5LCBPdmVybGFuZCBQYXJrLCBLUyA2NjIxMy4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IG11Y2ggZG9lcyBhIHNlcnZpY2UgY2FsbCBjb3N0PycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdVcGZyb250IGZsYXQtcmF0ZSBwcmljaW5nIGJlZm9yZSBhbnkgd29yayBzdGFydHMuIE5vIGhvdXJseSBzdXJwcmlzZXMuIFNlcnZpY2UgY2FsbCBmZWUgaXMgd2FpdmVkIHdoZW4geW91IGFwcHJvdmUgdGhlIHJlcGFpci4gRnJlZSBlc3RpbWF0ZXMgb24gbWFqb3Igd29yay4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IG9mZmVyIGZpbmFuY2luZz8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCAwJSBBUFIgZm9yIDEyIG1vbnRocyBvbiBxdWFsaWZpZWQgaW5zdGFsbHMgKHdhdGVyIGhlYXRlcnMsIHNld2VyIHJlcGxhY2VtZW50LCBzdW1wIHB1bXBzKS4gUGx1cyA2LzEyLzE4LW1vbnRoIHBsYW5zIHRocm91Z2ggV2lzZXRhY2suIEFzayB5b3VyIHRlY2ggb24tc2l0ZS4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnV2h5IHNob3VsZCBHYXJkbmVyIGhvbWVvd25lcnMgdHJ1c3QgQnJpZ2h0IFNpZGUgUGx1bWJpbmc/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJzUgZ2VuZXJhdGlvbnMgb2YgcGx1bWJlcnMg4oCUIHNhbWUgZmFtaWx5LCBzYW1lIE92ZXJsYW5kIFBhcmsgSFEsIHNpbmNlIHRoZSAxOTIwcy4gQSsgQkJCLiA0Ljkgc3RhcnMgKDM4NCsgR29vZ2xlIHJldmlld3MpLiBMaWNlbnNlZCArIGluc3VyZWQuIEV2ZXJ5IHJlcGFpciByZXZpZXdlZCBvciBwZXJmb3JtZWQgYnkgYSBsaWNlbnNlZCBtYXN0ZXIgcGx1bWJlci4nDQogICAgICAgICAgICBdDQogICAgICAgIF0sDQogICAgICAgICd6aXBzJyA9PiBbDQogICAgICAgICAgICAnNjYwMzAnDQogICAgICAgIF0NCiAgICBdLA0KICAgICdkZS1zb3RvJyA9PiBbDQogICAgICAgICdjaXR5X25hbWUnID0+ICdEZSBTb3RvJywNCiAgICAgICAgJ2NpdHlfc2x1ZycgPT4gJ2RlLXNvdG8nLA0KICAgICAgICAnbmVpZ2hib3Job29kcycgPT4gWw0KICAgICAgICAgICAgJ0NsZWFydmlldyBWaWxsYWdlJywNCiAgICAgICAgICAgICdXaWxkZmxvd2VyIFJpZGdlJywNCiAgICAgICAgICAgICdBcmJvciBSaWRnZScsDQogICAgICAgICAgICAnQ2VkYXIgUmlkZ2UgV2VzdCcsDQogICAgICAgICAgICAnQ2VkYXIgU3ByaW5ncyBJSScsDQogICAgICAgICAgICAnQ291bnRyeSBDcmVlayBFc3RhdGVzJywNCiAgICAgICAgICAgICdCcm9vayBXZXN0IEVzdGF0ZXMnDQogICAgICAgIF0sDQogICAgICAgICduZWFyYnlfY2l0aWVzJyA9PiBbDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdPdmVybGFuZCBQYXJrJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ292ZXJsYW5kLXBhcmsnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnT2xhdGhlJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ29sYXRoZScNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdMZWF3b29kJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlYXdvb2QnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnU2hhd25lZScsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdzaGF3bmVlJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1ByYWlyaWUgVmlsbGFnZScsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdwcmFpcmllLXZpbGxhZ2UnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTGVuZXhhJywNCiAgICAgICAgICAgICAgICAnc2x1ZycgPT4gJ2xlbmV4YScNCiAgICAgICAgICAgIF0NCiAgICAgICAgXSwNCiAgICAgICAgJ2ZhcScgPT4gWw0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IHNlcnZlIG15IERlIFNvdG8gbmVpZ2hib3Job29kPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIERlIFNvdG8gYW5kIGV2ZXJ5IFpJUCBmcm9tIDY2MDE4IHRvIDY2MDE4IGlmIHdlXCdyZSBjb3ZlcmluZyBhbGwgMSBvZiB0aGVtLiBDbGVhcnZpZXcgVmlsbGFnZSwgV2lsZGZsb3dlciBSaWRnZSwgQXJib3IgUmlkZ2UsIENlZGFyIFJpZGdlIFdlc3QsIGFuZCAyMCsgbW9yZS4gU2FtZS1kYXkgYWNyb3NzIGFsbCBvZiB0aGVtLicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdIb3cgZmFzdCBjYW4geW91IGdldCB0byBEZSBTb3RvPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdBdmVyYWdlIHJlc3BvbnNlIHRpbWUgYWNyb3NzIERlIFNvdG8gaXMgNjAgbWludXRlcy4gRW1lcmdlbmN5PyBDYWxsICg5MTMpIDk2My0xMDI5IGFuZCBhIGRpc3BhdGNoZXIgcGlja3MgdXAgaW4gMTUgc2Vjb25kcywgMjQvNy4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnQXJlIHlvdSBsaWNlbnNlZCBpbiBKb2huc29uIENvdW50eT8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCBsaWNlbnNlZCwgaW5zdXJlZCwgYW5kIGJvbmRlZC4gV2VcJ3ZlIGhlbGQgb3VyIG1hc3RlciBwbHVtYmVyIGxpY2Vuc2UgaW4gSm9obnNvbiBDb3VudHkgZm9yIDUgZ2VuZXJhdGlvbnMuIE5vdCBhIG5hdGlvbmFsIGZyYW5jaGlzZSDigJQgYSBmYW1pbHkgYnVzaW5lc3Mgd2l0aCBvdXIgSFEgYXQgMTIwMjIgQmx1ZSBWYWxsZXkgUGt3eSwgT3ZlcmxhbmQgUGFyaywgS1MgNjYyMTMuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0hvdyBtdWNoIGRvZXMgYSBzZXJ2aWNlIGNhbGwgY29zdD8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnVXBmcm9udCBmbGF0LXJhdGUgcHJpY2luZyBiZWZvcmUgYW55IHdvcmsgc3RhcnRzLiBObyBob3VybHkgc3VycHJpc2VzLiBTZXJ2aWNlIGNhbGwgZmVlIGlzIHdhaXZlZCB3aGVuIHlvdSBhcHByb3ZlIHRoZSByZXBhaXIuIEZyZWUgZXN0aW1hdGVzIG9uIG1ham9yIHdvcmsuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBvZmZlciBmaW5hbmNpbmc/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgMCUgQVBSIGZvciAxMiBtb250aHMgb24gcXVhbGlmaWVkIGluc3RhbGxzICh3YXRlciBoZWF0ZXJzLCBzZXdlciByZXBsYWNlbWVudCwgc3VtcCBwdW1wcykuIFBsdXMgNi8xMi8xOC1tb250aCBwbGFucyB0aHJvdWdoIFdpc2V0YWNrLiBBc2sgeW91ciB0ZWNoIG9uLXNpdGUuJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ1doeSBzaG91bGQgRGUgU290byBob21lb3duZXJzIHRydXN0IEJyaWdodCBTaWRlIFBsdW1iaW5nPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICc1IGdlbmVyYXRpb25zIG9mIHBsdW1iZXJzIOKAlCBzYW1lIGZhbWlseSwgc2FtZSBPdmVybGFuZCBQYXJrIEhRLCBzaW5jZSB0aGUgMTkyMHMuIEErIEJCQi4gNC45IHN0YXJzICgzODQrIEdvb2dsZSByZXZpZXdzKS4gTGljZW5zZWQgKyBpbnN1cmVkLiBFdmVyeSByZXBhaXIgcmV2aWV3ZWQgb3IgcGVyZm9ybWVkIGJ5IGEgbGljZW5zZWQgbWFzdGVyIHBsdW1iZXIuJw0KICAgICAgICAgICAgXQ0KICAgICAgICBdLA0KICAgICAgICAnemlwcycgPT4gWw0KICAgICAgICAgICAgJzY2MDE4Jw0KICAgICAgICBdDQogICAgXSwNCiAgICAnZWRnZXJ0b24nID0+IFsNCiAgICAgICAgJ2NpdHlfbmFtZScgPT4gJ0VkZ2VydG9uJywNCiAgICAgICAgJ2NpdHlfc2x1ZycgPT4gJ2VkZ2VydG9uJywNCiAgICAgICAgJ25laWdoYm9yaG9vZHMnID0+IFtdLA0KICAgICAgICAnbmVhcmJ5X2NpdGllcycgPT4gWw0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnT3ZlcmxhbmQgUGFyaycsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdvdmVybGFuZC1wYXJrJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ09sYXRoZScsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdvbGF0aGUnDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnTGVhd29vZCcsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdsZWF3b29kJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ1NoYXduZWUnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAnc2hhd25lZScNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdQcmFpcmllIFZpbGxhZ2UnLA0KICAgICAgICAgICAgICAgICdzbHVnJyA9PiAncHJhaXJpZS12aWxsYWdlJw0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0xlbmV4YScsDQogICAgICAgICAgICAgICAgJ3NsdWcnID0+ICdsZW5leGEnDQogICAgICAgICAgICBdDQogICAgICAgIF0sDQogICAgICAgICdmYXEnID0+IFsNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAncScgPT4gJ0RvIHlvdSBzZXJ2ZSBteSBFZGdlcnRvbiBuZWlnaGJvcmhvb2Q/JywNCiAgICAgICAgICAgICAgICAnYScgPT4gJ1llcyDigJQgRWRnZXJ0b24gYW5kIGV2ZXJ5IFpJUCBmcm9tIDY2MDIxIHRvIDY2MDIxIGlmIHdlXCdyZSBjb3ZlcmluZyBhbGwgMSBvZiB0aGVtLiAsIGFuZCAyMCsgbW9yZS4gU2FtZS1kYXkgYWNyb3NzIGFsbCBvZiB0aGVtLicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdIb3cgZmFzdCBjYW4geW91IGdldCB0byBFZGdlcnRvbj8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnQXZlcmFnZSByZXNwb25zZSB0aW1lIGFjcm9zcyBFZGdlcnRvbiBpcyA2MCBtaW51dGVzLiBFbWVyZ2VuY3k/IENhbGwgKDkxMykgOTYzLTEwMjkgYW5kIGEgZGlzcGF0Y2hlciBwaWNrcyB1cCBpbiAxNSBzZWNvbmRzLCAyNC83LicNCiAgICAgICAgICAgIF0sDQogICAgICAgICAgICBbDQogICAgICAgICAgICAgICAgJ3EnID0+ICdBcmUgeW91IGxpY2Vuc2VkIGluIEpvaG5zb24gQ291bnR5PycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdZZXMg4oCUIGxpY2Vuc2VkLCBpbnN1cmVkLCBhbmQgYm9uZGVkLiBXZVwndmUgaGVsZCBvdXIgbWFzdGVyIHBsdW1iZXIgbGljZW5zZSBpbiBKb2huc29uIENvdW50eSBmb3IgNSBnZW5lcmF0aW9ucy4gTm90IGEgbmF0aW9uYWwgZnJhbmNoaXNlIOKAlCBhIGZhbWlseSBidXNpbmVzcyB3aXRoIG91ciBIUSBhdCAxMjAyMiBCbHVlIFZhbGxleSBQa3d5LCBPdmVybGFuZCBQYXJrLCBLUyA2NjIxMy4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnSG93IG11Y2ggZG9lcyBhIHNlcnZpY2UgY2FsbCBjb3N0PycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICdVcGZyb250IGZsYXQtcmF0ZSBwcmljaW5nIGJlZm9yZSBhbnkgd29yayBzdGFydHMuIE5vIGhvdXJseSBzdXJwcmlzZXMuIFNlcnZpY2UgY2FsbCBmZWUgaXMgd2FpdmVkIHdoZW4geW91IGFwcHJvdmUgdGhlIHJlcGFpci4gRnJlZSBlc3RpbWF0ZXMgb24gbWFqb3Igd29yay4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnRG8geW91IG9mZmVyIGZpbmFuY2luZz8nLA0KICAgICAgICAgICAgICAgICdhJyA9PiAnWWVzIOKAlCAwJSBBUFIgZm9yIDEyIG1vbnRocyBvbiBxdWFsaWZpZWQgaW5zdGFsbHMgKHdhdGVyIGhlYXRlcnMsIHNld2VyIHJlcGxhY2VtZW50LCBzdW1wIHB1bXBzKS4gUGx1cyA2LzEyLzE4LW1vbnRoIHBsYW5zIHRocm91Z2ggV2lzZXRhY2suIEFzayB5b3VyIHRlY2ggb24tc2l0ZS4nDQogICAgICAgICAgICBdLA0KICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICdxJyA9PiAnV2h5IHNob3VsZCBFZGdlcnRvbiBob21lb3duZXJzIHRydXN0IEJyaWdodCBTaWRlIFBsdW1iaW5nPycsDQogICAgICAgICAgICAgICAgJ2EnID0+ICc1IGdlbmVyYXRpb25zIG9mIHBsdW1iZXJzIOKAlCBzYW1lIGZhbWlseSwgc2FtZSBPdmVybGFuZCBQYXJrIEhRLCBzaW5jZSB0aGUgMTkyMHMuIEErIEJCQi4gNC45IHN0YXJzICgzODQrIEdvb2dsZSByZXZpZXdzKS4gTGljZW5zZWQgKyBpbnN1cmVkLiBFdmVyeSByZXBhaXIgcmV2aWV3ZWQgb3IgcGVyZm9ybWVkIGJ5IGEgbGljZW5zZWQgbWFzdGVyIHBsdW1iZXIuJw0KICAgICAgICAgICAgXQ0KICAgICAgICBdLA0KICAgICAgICAnemlwcycgPT4gWw0KICAgICAgICAgICAgJzY2MDIxJw0KICAgICAgICBdDQogICAgXQ0KXTsNCg0KLyoqDQogKiBic3BfYnVpbGRfbG9jYXRpb25fc2NoZW1hIMK3IHJldHVybnMgSlNPTi1MRCBzdHJpbmcgZm9yIGdpdmVuIGNpdHkgc2x1Zy4NCiAqIFNjaGVtYTogTG9jYWxCdXNpbmVzcyArIFBsdW1iZXIgKyBGQVFQYWdlICsgQnJlYWRjcnVtYkxpc3QgQGdyYXBoLg0KICogVXNlcyB3cF9qc29uX2VuY29kZSAoV1Agd3JhcHBlciwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUykuDQogKi8NCmZ1bmN0aW9uIGJzcF9idWlsZF9sb2NhdGlvbl9zY2hlbWEoJHNsdWcpIHsNCiAgICAvLyBQQVRIX0FfV1BPUFRJT05TX0FQUjI4IC0gcmVhZCB3cF9vcHRpb25zIGZpcnN0LCAkQlNQX0xPQ0FUSU9OUyBsaXRlcmFsIGFzIGZhbGxiYWNrIChBcHIgMjggc2Vzc2lvbiA0IEwyLjEgUGF0aCBJSSkNCiAgICAkbG9jID0gbnVsbDsNCiAgICAkYnJpZWZfanNvbiA9IGdldF9vcHRpb24oJ2JzcF9sb2NhdGlvbl9icmllZl8nIC4gJHNsdWcsIG51bGwpOw0KICAgIGlmICgkYnJpZWZfanNvbiAhPT0gbnVsbCkgew0KICAgICAgICAkZGVjb2RlZCA9IGpzb25fZGVjb2RlKCRicmllZl9qc29uLCB0cnVlKTsNCiAgICAgICAgaWYgKGlzX2FycmF5KCRkZWNvZGVkKSAmJiBpc3NldCgkZGVjb2RlZFsnY2l0eV9uYW1lJ10pKSB7DQogICAgICAgICAgICAkbG9jID0gJGRlY29kZWQ7DQogICAgICAgIH0NCiAgICB9DQogICAgaWYgKCRsb2MgPT09IG51bGwpIHsNCiAgICAgICAgZ2xvYmFsICRCU1BfTE9DQVRJT05TOw0KICAgICAgICBpZiAoIWlzc2V0KCRCU1BfTE9DQVRJT05TWyRzbHVnXSkpIHJldHVybiBudWxsOw0KICAgICAgICAkbG9jID0gJEJTUF9MT0NBVElPTlNbJHNsdWddOw0KICAgIH0NCg0KICAgICRhcmVhX3NlcnZlZCA9IFtbJ0B0eXBlJyA9PiAnQ2l0eScsICduYW1lJyA9PiAkbG9jWydjaXR5X25hbWUnXV1dOw0KICAgIGZvcmVhY2ggKCgkbG9jWyduZWlnaGJvcmhvb2RzJ10gPz8gW10pIGFzICRuYnIpIHsNCiAgICAgICAgJGFyZWFfc2VydmVkW10gPSBbJ0B0eXBlJyA9PiAnUGxhY2UnLCAnbmFtZScgPT4gJG5iciAuICcsICcgLiAkbG9jWydjaXR5X25hbWUnXV07DQogICAgfQ0KICAgIGZvcmVhY2ggKCgkbG9jWyduZWFyYnlfY2l0aWVzJ10gPz8gW10pIGFzICRuYykgew0KICAgICAgICAkYXJlYV9zZXJ2ZWRbXSA9IFsnQHR5cGUnID0+ICdDaXR5JywgJ25hbWUnID0+ICRuY1snbmFtZSddXTsNCiAgICB9DQoNCiAgICAkZmFxX21haW5fZW50aXR5ID0gW107DQogICAgZm9yZWFjaCAoKCRsb2NbJ2ZhcSddID8/IFtdKSBhcyAkZikgew0KICAgICAgICAkZmFxX21haW5fZW50aXR5W10gPSBbDQogICAgICAgICAgICAnQHR5cGUnID0+ICdRdWVzdGlvbicsDQogICAgICAgICAgICAnbmFtZScgPT4gJGZbJ3EnXSwNCiAgICAgICAgICAgICdhY2NlcHRlZEFuc3dlcicgPT4gWydAdHlwZScgPT4gJ0Fuc3dlcicsICd0ZXh0JyA9PiAkZlsnYSddXQ0KICAgICAgICBdOw0KICAgIH0NCg0KICAgICRzY2hlbWEgPSBbDQogICAgICAgICdAY29udGV4dCcgPT4gJ2h0dHBzOi8vc2NoZW1hLm9yZycsDQogICAgICAgICdAZ3JhcGgnID0+IFsNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnQHR5cGUnID0+IFsnTG9jYWxCdXNpbmVzcycsICdQbHVtYmVyJ10sDQogICAgICAgICAgICAgICAgJ0BpZCcgPT4gJ2h0dHBzOi8vYnJpY2tzLmNhbGxicmlnaHRzaWRlLmNvbS9wbHVtYmVyLWluLScgLiAkc2x1ZyAuICcvI2J1c2luZXNzJywNCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJ0JyaWdodCBTaWRlIFBsdW1iaW5nJywNCiAgICAgICAgICAgICAgICAnZGVzY3JpcHRpb24nID0+ICdMaWNlbnNlZCBpbnN1cmVkIHBsdW1iZXIgc2VydmluZyAnIC4gJGxvY1snY2l0eV9uYW1lJ10gLiAnIHNpbmNlIHRoZSAxOTIwcy4nLA0KICAgICAgICAgICAgICAgICd1cmwnID0+ICdodHRwczovL2JyaWNrcy5jYWxsYnJpZ2h0c2lkZS5jb20vcGx1bWJlci1pbi0nIC4gJHNsdWcgLiAnLycsDQogICAgICAgICAgICAgICAgJ3RlbGVwaG9uZScgPT4gJysxLTkxMy05NjMtMTAyOScsDQogICAgICAgICAgICAgICAgJ3ByaWNlUmFuZ2UnID0+ICckJCcsDQogICAgICAgICAgICAgICAgJ2FkZHJlc3MnID0+IFsNCiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJyA9PiAnUG9zdGFsQWRkcmVzcycsDQogICAgICAgICAgICAgICAgICAgICdzdHJlZXRBZGRyZXNzJyA9PiAnMTIwMjIgQmx1ZSBWYWxsZXkgUGt3eScsDQogICAgICAgICAgICAgICAgICAgICdhZGRyZXNzTG9jYWxpdHknID0+ICdPdmVybGFuZCBQYXJrJywNCiAgICAgICAgICAgICAgICAgICAgJ2FkZHJlc3NSZWdpb24nID0+ICdLUycsDQogICAgICAgICAgICAgICAgICAgICdwb3N0YWxDb2RlJyA9PiAnNjYyMTMnLA0KICAgICAgICAgICAgICAgICAgICAnYWRkcmVzc0NvdW50cnknID0+ICdVUycNCiAgICAgICAgICAgICAgICBdLA0KICAgICAgICAgICAgICAgICdhcmVhU2VydmVkJyA9PiAkYXJlYV9zZXJ2ZWQsDQogICAgICAgICAgICAgICAgJ2FnZ3JlZ2F0ZVJhdGluZycgPT4gWw0KICAgICAgICAgICAgICAgICAgICAnQHR5cGUnID0+ICdBZ2dyZWdhdGVSYXRpbmcnLA0KICAgICAgICAgICAgICAgICAgICAncmF0aW5nVmFsdWUnID0+ICc0LjknLA0KICAgICAgICAgICAgICAgICAgICAncmV2aWV3Q291bnQnID0+ICczODQnDQogICAgICAgICAgICAgICAgXQ0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnQHR5cGUnID0+ICdGQVFQYWdlJywNCiAgICAgICAgICAgICAgICAnQGlkJyA9PiAnaHR0cHM6Ly9icmlja3MuY2FsbGJyaWdodHNpZGUuY29tL3BsdW1iZXItaW4tJyAuICRzbHVnIC4gJy8jZmFxJywNCiAgICAgICAgICAgICAgICAnbWFpbkVudGl0eScgPT4gJGZhcV9tYWluX2VudGl0eQ0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAnQHR5cGUnID0+ICdCcmVhZGNydW1iTGlzdCcsDQogICAgICAgICAgICAgICAgJ2l0ZW1MaXN0RWxlbWVudCcgPT4gWw0KICAgICAgICAgICAgICAgICAgICBbJ0B0eXBlJyA9PiAnTGlzdEl0ZW0nLCAncG9zaXRpb24nID0+IDEsICduYW1lJyA9PiAnSG9tZScsDQogICAgICAgICAgICAgICAgICAgICAnaXRlbScgPT4gJ2h0dHBzOi8vYnJpY2tzLmNhbGxicmlnaHRzaWRlLmNvbS8nXSwNCiAgICAgICAgICAgICAgICAgICAgWydAdHlwZScgPT4gJ0xpc3RJdGVtJywgJ3Bvc2l0aW9uJyA9PiAyLA0KICAgICAgICAgICAgICAgICAgICAgJ25hbWUnID0+ICdQbHVtYmVyIGluICcgLiAkbG9jWydjaXR5X25hbWUnXSwNCiAgICAgICAgICAgICAgICAgICAgICdpdGVtJyA9PiAnaHR0cHM6Ly9icmlja3MuY2FsbGJyaWdodHNpZGUuY29tL3BsdW1iZXItaW4tJyAuICRzbHVnIC4gJy8nXQ0KICAgICAgICAgICAgICAgIF0NCiAgICAgICAgICAgIF0NCiAgICAgICAgXQ0KICAgIF07DQogICAgcmV0dXJuIHdwX2pzb25fZW5jb2RlKCRzY2hlbWEsIEpTT05fVU5FU0NBUEVEX1NMQVNIRVMpOw0KfQ0KDQovKiogd3BfaGVhZCBwcmlvcml0eSA5OTkg4oCUIGluamVjdCBzY2hlbWEgZm9yIGxvY2F0aW9uIHBhZ2UgcG9zdF9pZHMgb25seS4gKi8NCmFkZF9hY3Rpb24oJ3dwX2hlYWQnLCAnYnNwX2xvY2F0aW9uX3NjaGVtYV9pbmplY3QnLCA5OTkpOw0KZnVuY3Rpb24gYnNwX2xvY2F0aW9uX3NjaGVtYV9pbmplY3QoKSB7DQogICAgaWYgKGlzX2FkbWluKCkgfHwgd3BfZG9pbmdfYWpheCgpIHx8IChkZWZpbmVkKCdSRVNUX1JFUVVFU1QnKSAmJiBSRVNUX1JFUVVFU1QpKSByZXR1cm47DQogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYnJpY2tzX2lzX2J1aWxkZXJfbWFpbicpICYmIGJyaWNrc19pc19idWlsZGVyX21haW4oKSkgcmV0dXJuOw0KICAgICRsb2NhdGlvbl9waWRzID0gWzI1OCwgMjg1LCAyOTMsIDI5NCwgMjk1LCAyOTYsIDI5NywgMjk4LCAyOTksIDMwMCwgMzAxLCAzMDIsIDMwMywgMzA0LCAzMDVdOw0KICAgIGlmICghaXNfc2luZ3VsYXIoKSB8fCAhaW5fYXJyYXkoZ2V0X3RoZV9JRCgpLCAkbG9jYXRpb25fcGlkcywgdHJ1ZSkpIHJldHVybjsNCiAgICAvLyBTTFVHX0ZJWF9BUFIyNyDigJQgV1AgcG9zdF9uYW1lIGlzICJwbHVtYmVyLWluLTxjaXR5PiIgYnV0ICRCU1BfTE9DQVRJT05TIGtleWVkIGJ5IGNpdHkgc2x1ZyBvbmx5DQogICAgJHNsdWcgPSBnZXRfcG9zdF9maWVsZCgncG9zdF9uYW1lJywgZ2V0X3RoZV9JRCgpKTsNCiAgICAkc2x1ZyA9IHN0cl9yZXBsYWNlKCdwbHVtYmVyLWluLScsICcnLCAkc2x1Zyk7DQogICAgJHNjaGVtYSA9IGJzcF9idWlsZF9sb2NhdGlvbl9zY2hlbWEoJHNsdWcpOw0KICAgIGlmICgkc2NoZW1hKSB7DQogICAgICAgIGVjaG8gIlxuPHNjcmlwdCB0eXBlPVwiYXBwbGljYXRpb24vbGQranNvblwiPiIgLiAkc2NoZW1hIC4gIjwvc2NyaXB0PlxuIjsNCiAgICB9DQp9DQoNCi8qKiBCU1BfTE9DQVRJT05fU1RZTEVTX0FQUjI4IOKAlCBQYXRoIM6zLTEgQ1NTIHBvcnQgZnJvbSBTbmlwcGV0ICMxMTUgKEFwciAyOCBzZXNzaW9uIDQgTDMuMSkuDQogKiBSZXBsYWNlcyBib2R5LnBhZ2UtaWQtMjU4IHNlbGVjdG9ycyB3aXRoIDE1LXBpZCBQSFAtbGV2ZWwgZ2F0ZSAod3BfaGVhZCBwcmlvcml0eSAxMDAwKS4NCiAqIFNuaXBwZXQgIzExNSBkZWFjdGl2YXRpb24gc2NoZWR1bGVkIHBvc3QtMy4xLjcgdmlzdWFsIHJlZ3Jlc3Npb24gcGFzcy4NCiAqLw0KYWRkX2FjdGlvbignd3BfaGVhZCcsICdic3BfbG9jYXRpb25fc3R5bGVzX2luamVjdCcsIDEwMDApOw0KZnVuY3Rpb24gYnNwX2xvY2F0aW9uX3N0eWxlc19pbmplY3QoKSB7DQogICAgaWYgKGlzX2FkbWluKCkgfHwgd3BfZG9pbmdfYWpheCgpIHx8IChkZWZpbmVkKCdSRVNUX1JFUVVFU1QnKSAmJiBSRVNUX1JFUVVFU1QpKSByZXR1cm47DQogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYnJpY2tzX2lzX2J1aWxkZXJfbWFpbicpICYmIGJyaWNrc19pc19idWlsZGVyX21haW4oKSkgcmV0dXJuOw0KICAgICRsb2NhdGlvbl9waWRzID0gWzI1OCwgMjg1LCAyOTMsIDI5NCwgMjk1LCAyOTYsIDI5NywgMjk4LCAyOTksIDMwMCwgMzAxLCAzMDIsIDMwMywgMzA0LCAzMDVdOw0KICAgIGlmICghaXNfc2luZ3VsYXIoKSB8fCAhaW5fYXJyYXkoZ2V0X3RoZV9JRCgpLCAkbG9jYXRpb25fcGlkcywgdHJ1ZSkpIHJldHVybjsNCiAgICBlY2hvICJcbjxzdHlsZSBpZD1cImJzcC1sb2NhdGlvbi1zdHlsZXNcIj5cbiI7DQogICAgZWNobyA8PDwnQlNQTE9DQ1NTX0FQUjI4X0hFUkVET0NfRU5EJw0KLyogTE9DQVRJT05fU1RZTEVTX09QX05BTUVfU0NSVUJfQVBSMjgg4oCUIEwzLjEgbG9jYXRpb24gc3R5bGVzIHBvcnQgKEFwciAyOCBzZXNzaW9uIDQpLg0KICAgU291cmNlOiBTbmlwcGV0ICMxMTUgQ1NTIGJvZHksIGJvZHkucGFnZS1pZC0yNTggcHJlZml4IGRyb3BwZWQsIHdwX2hlYWQgcHJpb3JpdHkgMTAwMCArIDE1LXBpZCBQSFAgZ2F0ZS4NCiAgIEhlYWRlciBjb21tZW50IHNjcnViYmVkIHRvIHJlbW92ZSBub24tSFEgbGl0ZXJhbCB0aGF0IHRyaWdnZXJlZCAxNjgtY2hlY2sgRDMgcmVncmVzc2lvbi4gKi8NCg0KLyogPT09PSBHbG9iYWwgcGFnZSBjb250YWluZXIgPT09PSAqLw0KI2JyeC1jb250ZW50IHsgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IG92ZXJmbG93LXg6IGhpZGRlbiAhaW1wb3J0YW50OyB9DQoNCi8qID09PT0gSGVybyBzZWN0aW9uIChvcDAwMWgpID09PT0gKi8NCiNicnhlLW9wMDAxaHsNCiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7DQogIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7DQogIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50Ow0KICBtYXJnaW46IDAgIWltcG9ydGFudDsNCiAgcGFkZGluZzogNjBweCAyMHB4IDgwcHggIWltcG9ydGFudDsNCiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiYSgxOTAsMjMwLDI0NSwwLjE1KSAwJSwgcmdiYSgyNTUsMjU1LDI1NSwwKSA2MCUpICFpbXBvcnRhbnQ7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsNCiAgcm93LWdhcDogMjBweCAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AwMDFoID4gLmJyeGUtaW1hZ2V7DQogIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50Ow0KICBtYXgtd2lkdGg6IDEyNDBweCAhaW1wb3J0YW50Ow0KICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Ow0KICBoZWlnaHQ6IDQ0MHB4ICFpbXBvcnRhbnQ7DQogIGJvcmRlci1yYWRpdXM6IDE2cHggIWltcG9ydGFudDsNCiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AwMDFoID4gLmJyeGUtaW1hZ2UgaW1new0KICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsgaW5zZXQ6IDAgIWltcG9ydGFudDsNCiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7DQogIG9iamVjdC1maXQ6IGNvdmVyICFpbXBvcnRhbnQ7IG9iamVjdC1wb3NpdGlvbjogY2VudGVyICFpbXBvcnRhbnQ7DQogIGJvcmRlci1yYWRpdXM6IDE2cHggIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsNCn0NCi8qIEF2YWlsYWJpbGl0eSBjaGlwIOKAlCBncmVlbiBwaWxsICovDQojYnJ4ZS1vcDAwMWggPiAuYnJ4ZS1ibG9jazpmaXJzdC1vZi10eXBlew0KICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50Ow0KICBiYWNrZ3JvdW5kOiAjRENGQ0U3ICFpbXBvcnRhbnQ7DQogIGNvbG9yOiAjMTY2NTM0ICFpbXBvcnRhbnQ7DQogIHBhZGRpbmc6IDZweCAxNnB4ICFpbXBvcnRhbnQ7DQogIGJvcmRlci1yYWRpdXM6IDk5OXB4ICFpbXBvcnRhbnQ7DQogIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7DQogIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDsgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7DQogIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7IGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50Ow0KICBib3JkZXI6IDFweCBzb2xpZCAjMjJDNTVFICFpbXBvcnRhbnQ7DQp9DQojYnJ4ZS1vcDAwMWggPiAuYnJ4ZS1ibG9jazpmaXJzdC1vZi10eXBlID4gKnsNCiAgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDsgZm9udDogaW5oZXJpdCAhaW1wb3J0YW50Ow0KICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IG1hcmdpbjogMCAhaW1wb3J0YW50Ow0KfQ0KLyogSGVybyBIMSAqLw0KI2JyeGUtb3AwMDFoIGgxLmJyeGUtaGVhZGluZ3sNCiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsNCiAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50Ow0KICBmb250LXNpemU6IGNsYW1wKDI4cHgsIDR2dywgNDhweCkgIWltcG9ydGFudDsNCiAgbGluZS1oZWlnaHQ6IDEuMSAhaW1wb3J0YW50Ow0KICBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50Ow0KICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsNCiAgbWF4LXdpZHRoOiA5MDBweCAhaW1wb3J0YW50OyBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50Ow0KfQ0KLyogSGVybyBzdWJ0aXRsZSAqLw0KI2JyeGUtb3AwMDFoID4gLmJyeGUtdGV4dC1iYXNpY3sNCiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsNCiAgZm9udC1zaXplOiAyMHB4ICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudDsNCiAgbGluZS1oZWlnaHQ6IDEuNSAhaW1wb3J0YW50OyBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50Ow0KICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgbWF4LXdpZHRoOiA3ODBweCAhaW1wb3J0YW50OyBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50Ow0KfQ0KLyogSGVybyBDVEEgcm93ICovDQojYnJ4ZS1vcDAwMWggPiAuYnJ4ZS1ibG9jazpsYXN0LW9mLXR5cGV7DQogIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50Ow0KICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsNCiAgZ2FwOiAxMnB4ICFpbXBvcnRhbnQ7IG1hcmdpbi10b3A6IDhweCAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AwMDFoID4gLmJyeGUtYmxvY2s6bGFzdC1vZi10eXBlIGEuYnJ4ZS1idXR0b257DQogIHBhZGRpbmc6IDE0cHggMjRweCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOiA4cHggIWltcG9ydGFudDsNCiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50Ow0KICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDsgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7DQogIGJvcmRlcjogMCAhaW1wb3J0YW50OyBtaW4taGVpZ2h0OiA1MnB4ICFpbXBvcnRhbnQ7DQogIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7IGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsNCn0NCiNicnhlLW9wMDAxaCA+IC5icnhlLWJsb2NrOmxhc3Qtb2YtdHlwZSBhLmJyeGUtYnV0dG9uew0KICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgZWFzZSwgYmFja2dyb3VuZCAwLjE1cyBlYXNlLCBib3gtc2hhZG93IDAuMTVzIGVhc2UgIWltcG9ydGFudDsNCn0NCiNicnhlLW9wMDAxaCA+IC5icnhlLWJsb2NrOmxhc3Qtb2YtdHlwZSBhLmJyeGUtYnV0dG9uOm50aC1vZi10eXBlKDEpew0KICBiYWNrZ3JvdW5kOiAjMzBDNUZGICFpbXBvcnRhbnQ7IGNvbG9yOiAjMUQxNzYwICFpbXBvcnRhbnQ7DQp9DQojYnJ4ZS1vcDAwMWggPiAuYnJ4ZS1ibG9jazpsYXN0LW9mLXR5cGUgYS5icnhlLWJ1dHRvbjpudGgtb2YtdHlwZSgxKTpob3ZlciwNCiNicnhlLW9wMDAxaCA+IC5icnhlLWJsb2NrOmxhc3Qtb2YtdHlwZSBhLmJyeGUtYnV0dG9uOm50aC1vZi10eXBlKDEpOmZvY3Vzew0KICBiYWNrZ3JvdW5kOiAjMUZCM0VEICFpbXBvcnRhbnQ7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KSAhaW1wb3J0YW50Ow0KICBib3gtc2hhZG93OiAwIDZweCAxNnB4IHJnYmEoMjksMjMsOTYsMC4xNSkgIWltcG9ydGFudDsgb3V0bGluZTogMnB4IHNvbGlkICMxRDE3NjAgIWltcG9ydGFudDsgb3V0bGluZS1vZmZzZXQ6IDJweCAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AwMDFoID4gLmJyeGUtYmxvY2s6bGFzdC1vZi10eXBlIGEuYnJ4ZS1idXR0b246bnRoLW9mLXR5cGUoMil7DQogIGJhY2tncm91bmQ6ICMxRDE3NjAgIWltcG9ydGFudDsgY29sb3I6ICNGNUY1RjUgIWltcG9ydGFudDsNCn0NCiNicnhlLW9wMDAxaCA+IC5icnhlLWJsb2NrOmxhc3Qtb2YtdHlwZSBhLmJyeGUtYnV0dG9uOm50aC1vZi10eXBlKDIpOmhvdmVyLA0KI2JyeGUtb3AwMDFoID4gLmJyeGUtYmxvY2s6bGFzdC1vZi10eXBlIGEuYnJ4ZS1idXR0b246bnRoLW9mLXR5cGUoMik6Zm9jdXN7DQogIGJhY2tncm91bmQ6ICMyRDIzN0YgIWltcG9ydGFudDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpICFpbXBvcnRhbnQ7DQogIGJveC1zaGFkb3c6IDAgNnB4IDE2cHggcmdiYSgyOSwyMyw5NiwwLjI1KSAhaW1wb3J0YW50OyBvdXRsaW5lOiAycHggc29saWQgIzMwQzVGRiAhaW1wb3J0YW50OyBvdXRsaW5lLW9mZnNldDogMnB4ICFpbXBvcnRhbnQ7DQp9DQojYnJ4ZS1vcDAwMWggPiAuYnJ4ZS1ibG9jazpsYXN0LW9mLXR5cGUgYS5icnhlLWJ1dHRvbjpudGgtb2YtdHlwZSgzKXsNCiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsgY29sb3I6ICMxRDE3NjAgIWltcG9ydGFudDsNCiAgYm9yZGVyOiAycHggc29saWQgIzFEMTc2MCAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AwMDFoID4gLmJyeGUtYmxvY2s6bGFzdC1vZi10eXBlIGEuYnJ4ZS1idXR0b246bnRoLW9mLXR5cGUoMyk6aG92ZXIsDQojYnJ4ZS1vcDAwMWggPiAuYnJ4ZS1ibG9jazpsYXN0LW9mLXR5cGUgYS5icnhlLWJ1dHRvbjpudGgtb2YtdHlwZSgzKTpmb2N1c3sNCiAgYmFja2dyb3VuZDogIzFEMTc2MCAhaW1wb3J0YW50OyBjb2xvcjogI0Y1RjVGNSAhaW1wb3J0YW50Ow0KICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCkgIWltcG9ydGFudDsgb3V0bGluZTogMnB4IHNvbGlkICMzMEM1RkYgIWltcG9ydGFudDsgb3V0bGluZS1vZmZzZXQ6IDJweCAhaW1wb3J0YW50Ow0KfQ0KDQovKiA9PT09IFRydXN0IGNoaXBzIHJvdyAob3AwMTF0KSA9PT09ICovDQojYnJ4ZS1vcDAxMXR7IHBhZGRpbmc6IDIwcHggIWltcG9ydGFudDsgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsgbWF4LXdpZHRoOiAxMjQwcHggIWltcG9ydGFudDsgfQ0KI2JyeGUtb3AwMTF0ID4gLmJyeGUtYmxvY2t7DQogIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50Ow0KICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsNCiAgZ2FwOiAxMnB4ICFpbXBvcnRhbnQ7IHBhZGRpbmc6IDE2cHggIWltcG9ydGFudDsNCiAgYmFja2dyb3VuZDogI0ZGRkZGRiAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOiAxMnB4ICFpbXBvcnRhbnQ7DQogIGJvcmRlcjogMXB4IHNvbGlkICNFMkU4RjAgIWltcG9ydGFudDsNCn0NCiNicnhlLW9wMDExdCA+IC5icnhlLWJsb2NrID4gLmJyeGUtdGV4dC1iYXNpY3sNCiAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50Ow0KICBwYWRkaW5nOiA4cHggMTRweCAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOiAjRjhGQUZDICFpbXBvcnRhbnQ7DQogIGJvcmRlci1yYWRpdXM6IDk5OXB4ICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMTNweCAhaW1wb3J0YW50Ow0KICBmb250LXdlaWdodDogNTAwICFpbXBvcnRhbnQ7IGNvbG9yOiAjMUQxNzYwICFpbXBvcnRhbnQ7DQogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50OyB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7DQp9DQoNCi8qID09PT0gTWFwICsgVHJ1c3Qgc2lkZWJhciAob3AwMTltKSA9PT09ICovDQojYnJ4ZS1vcDAxOW17IHBhZGRpbmc6IDYwcHggMjBweCAhaW1wb3J0YW50OyBtYXgtd2lkdGg6IDEyODBweCAhaW1wb3J0YW50OyBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OyB9DQojYnJ4ZS1vcDAxOW0gPiAuYnJ4ZS1ibG9ja3sNCiAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50Ow0KICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAzNjBweCAhaW1wb3J0YW50Ow0KICBnYXA6IDQwcHggIWltcG9ydGFudDsgYWxpZ24taXRlbXM6IHN0YXJ0ICFpbXBvcnRhbnQ7DQogIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7DQp9DQojYnJ4ZS1vcDAxOW0gPiAuYnJ4ZS1ibG9jayA+IC5icnhlLWJsb2NrOm50aC1vZi10eXBlKDEpew0KICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsgZ2FwOiAxNnB4ICFpbXBvcnRhbnQ7DQp9DQojYnJ4ZS1vcDAxOW0gPiAuYnJ4ZS1ibG9jayA+IC5icnhlLWJsb2NrOm50aC1vZi10eXBlKDEpIC5icnhlLWNvZGV7DQogIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OyBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7DQogIGJvcmRlci1yYWRpdXM6IDEycHggIWltcG9ydGFudDsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsNCiAgYXNwZWN0LXJhdGlvOiAxNi8xMCAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2sgPiAuYnJ4ZS1ibG9jazpudGgtb2YtdHlwZSgxKSAuYnJ4ZS1jb2RlIGlmcmFtZXsNCiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7IGluc2V0OiAwICFpbXBvcnRhbnQ7DQogIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGhlaWdodDogMTAwJSAhaW1wb3J0YW50Ow0KICBib3JkZXItcmFkaXVzOiAxMnB4ICFpbXBvcnRhbnQ7IGJvcmRlcjogMCAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2sgPiAuYnJ4ZS1ibG9jazpudGgtb2YtdHlwZSgxKSA+IC5icnhlLXRleHQtYmFzaWN7DQogIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50OyBjb2xvcjogIzQ3NTU2OSAhaW1wb3J0YW50Ow0KICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50Ow0KfQ0KLyogUmlnaHQgc2lkZWJhciDigJQgdHJ1c3QgY2hpcHMgc3RhY2tlZCAqLw0KI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2sgPiAuYnJ4ZS1ibG9jazpudGgtb2YtdHlwZSgyKXsNCiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7IGdhcDogMTJweCAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2sgPiAuYnJ4ZS1ibG9jazpudGgtb2YtdHlwZSgyKSA+IC5icnhlLXRleHQtYmFzaWN7DQogIHBhZGRpbmc6IDEycHggMTZweCAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOiAjRjhGQUZDICFpbXBvcnRhbnQ7DQogIGJvcmRlci1yYWRpdXM6IDhweCAhaW1wb3J0YW50OyBib3JkZXI6IDFweCBzb2xpZCAjRTJFOEYwICFpbXBvcnRhbnQ7DQogIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50OyBmb250LXdlaWdodDogNTAwICFpbXBvcnRhbnQ7DQogIGNvbG9yOiAjMUQxNzYwICFpbXBvcnRhbnQ7IGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50Ow0KfQ0KDQovKiA9PT09IFNlcnZpY2VzIChvcDAzMXMpID09PT0gKi8NCiNicnhlLW9wMDMxc3sgcGFkZGluZzogNjBweCAyMHB4ICFpbXBvcnRhbnQ7IG1heC13aWR0aDogMTI4MHB4ICFpbXBvcnRhbnQ7IG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7IHJvdy1nYXA6IDMwcHggIWltcG9ydGFudDsgfQ0KI2JyeGUtb3AwMzFzID4gaDIuYnJ4ZS1oZWFkaW5new0KICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50Ow0KICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMzJweCAhaW1wb3J0YW50Ow0KICBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsNCiAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsNCn0NCiNicnhlLW9wMDMxcyA+IHAuYnJ4ZS10ZXh0LWJhc2ljew0KICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50Ow0KICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50Ow0KICBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDogMS42ICFpbXBvcnRhbnQ7DQogIG1heC13aWR0aDogOTYwcHggIWltcG9ydGFudDsgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7DQp9DQojYnJ4ZS1vcDAzMXMgPiAuYnJ4ZS1ibG9ja3sNCiAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50Ow0KICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpICFpbXBvcnRhbnQ7DQogIGdhcDogMjRweCAhaW1wb3J0YW50OyB3aWR0aDogMTAwJSAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AwMzFzID4gLmJyeGUtYmxvY2sgPiAuYnJ4ZS1ibG9ja3sNCiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsgZ2FwOiAxMnB4ICFpbXBvcnRhbnQ7DQogIHBhZGRpbmc6IDI4cHggMjBweCAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOiAjRjhGQUZDICFpbXBvcnRhbnQ7DQogIGJvcmRlci1yYWRpdXM6IDEycHggIWltcG9ydGFudDsgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7DQp9DQojYnJ4ZS1vcDAzMXMgLmJyeGUtaW1hZ2V7IG1heC13aWR0aDogODBweCAhaW1wb3J0YW50OyB9DQojYnJ4ZS1vcDAzMXMgLmJyeGUtaW1hZ2UgaW1neyB3aWR0aDogODBweCAhaW1wb3J0YW50OyBoZWlnaHQ6IDgwcHggIWltcG9ydGFudDsgb2JqZWN0LWZpdDogY29udGFpbiAhaW1wb3J0YW50OyB9DQojYnJ4ZS1vcDAzMXMgaDMuYnJ4ZS1oZWFkaW5new0KICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50Ow0KICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMjBweCAhaW1wb3J0YW50Ow0KICBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50OyBtYXJnaW46IDAgIWltcG9ydGFudDsNCn0NCiNicnhlLW9wMDMxcyAuYnJ4ZS1ibG9jayBwLmJyeGUtdGV4dC1iYXNpY3sNCiAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7IGNvbG9yOiAjMUQxNzYwICFpbXBvcnRhbnQ7DQogIG1hcmdpbjogMCAhaW1wb3J0YW50OyBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AwMzFzIGEuYnJ4ZS1idXR0b257DQogIGNvbG9yOiAjMzBDNUZGICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDsNCiAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7DQogIHBhZGRpbmc6IDRweCAwICFpbXBvcnRhbnQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50Ow0KICBtYXJnaW4tdG9wOiA4cHggIWltcG9ydGFudDsgYm9yZGVyOiAwICFpbXBvcnRhbnQ7DQogIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGVhc2UgIWltcG9ydGFudDsNCn0NCiNicnhlLW9wMDMxcyBhLmJyeGUtYnV0dG9uOmhvdmVyLA0KI2JyeGUtb3AwMzFzIGEuYnJ4ZS1idXR0b246Zm9jdXN7DQogIGNvbG9yOiAjMUQxNzYwICFpbXBvcnRhbnQ7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnQ7DQogIG91dGxpbmU6IDJweCBzb2xpZCAjMzBDNUZGICFpbXBvcnRhbnQ7IG91dGxpbmUtb2Zmc2V0OiAycHggIWltcG9ydGFudDsNCn0NCg0KLyogPT09PSBSZXZpZXdzIChvcDA2NXIpID09PT0gKi8NCiNicnhlLW9wMDY1cnsgcGFkZGluZzogNjBweCAyMHB4ICFpbXBvcnRhbnQ7IG1heC13aWR0aDogMTI4MHB4ICFpbXBvcnRhbnQ7IG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7IH0NCiNicnhlLW9wMDY1ciA+IGgyLmJyeGUtaGVhZGluZ3sNCiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsNCiAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50OyBmb250LXNpemU6IDMycHggIWltcG9ydGFudDsNCiAgY29sb3I6ICMxRDE3NjAgIWltcG9ydGFudDsgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206IDI0cHggIWltcG9ydGFudDsNCn0NCiNicnhlLW9wMDY1ciA+IC5icnhlLWJsb2Nrew0KICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcikgIWltcG9ydGFudDsNCiAgZ2FwOiAyMHB4ICFpbXBvcnRhbnQ7DQp9DQojYnJ4ZS1vcDA2NXIgPiAuYnJ4ZS1ibG9jayA+IC5icnhlLWJsb2Nrew0KICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsNCiAgZ2FwOiA4cHggIWltcG9ydGFudDsgcGFkZGluZzogMjRweCAhaW1wb3J0YW50Ow0KICBiYWNrZ3JvdW5kOiAjRkZGRkZGICFpbXBvcnRhbnQ7IGJvcmRlcjogMXB4IHNvbGlkICNFMkU4RjAgIWltcG9ydGFudDsNCiAgYm9yZGVyLXJhZGl1czogMTJweCAhaW1wb3J0YW50OyBtaW4taGVpZ2h0OiAxODBweCAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AwNjVyIC5icnhlLXRleHQtYmFzaWM6bnRoLWNoaWxkKDEpew0KICBjb2xvcjogI0Y1OUUwQiAhaW1wb3J0YW50OyBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50Ow0KICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AwNjVyIC5icnhlLXRleHQtYmFzaWM6bnRoLWNoaWxkKDIpew0KICBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50OyBmb250LXNpemU6IDE1cHggIWltcG9ydGFudDsNCiAgbGluZS1oZWlnaHQ6IDEuNSAhaW1wb3J0YW50OyBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudDsNCiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsNCn0NCiNicnhlLW9wMDY1ciAuYnJ4ZS10ZXh0LWJhc2ljOm50aC1jaGlsZCgzKXsNCiAgY29sb3I6ICMxRDE3NjAgIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50OyBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDsNCiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AwNjVyIC5icnhlLXRleHQtYmFzaWM6bnRoLWNoaWxkKDQpew0KICBjb2xvcjogIzMwQzVGRiAhaW1wb3J0YW50OyBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMTNweCAhaW1wb3J0YW50Ow0KICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50Ow0KfQ0KDQovKiA9PT09IEhvdyBJdCBXb3JrcyAob3AwODNoKSA9PT09ICovDQojYnJ4ZS1vcDA4M2h7IHBhZGRpbmc6IDYwcHggMjBweCAhaW1wb3J0YW50OyBtYXgtd2lkdGg6IDEyODBweCAhaW1wb3J0YW50OyBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OyByb3ctZ2FwOiAxMHB4ICFpbXBvcnRhbnQ7IH0NCiNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZ3sNCiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsNCiAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50OyBmb250LXNpemU6IDMycHggIWltcG9ydGFudDsNCiAgY29sb3I6ICMxRDE3NjAgIWltcG9ydGFudDsgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7DQp9DQojYnJ4ZS1vcDA4M2ggPiAuYnJ4ZS1pbWFnZXsgbWF4LXdpZHRoOiAyNjBweCAhaW1wb3J0YW50OyBtYXJnaW46IDAgYXV0byAyNHB4ICFpbXBvcnRhbnQ7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH0NCiNicnhlLW9wMDgzaCA+IC5icnhlLWltYWdlIGltZ3sgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IH0NCiNicnhlLW9wMDgzaCA+IC5icnhlLWJsb2Nrew0KICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcikgIWltcG9ydGFudDsNCiAgZ2FwOiAyNHB4ICFpbXBvcnRhbnQ7DQp9DQojYnJ4ZS1vcDA4M2ggPiAuYnJ4ZS1ibG9jayA+IC5icnhlLWJsb2Nrew0KICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsNCiAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OyBnYXA6IDEycHggIWltcG9ydGFudDsNCiAgcGFkZGluZzogMjhweCAyMHB4ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6ICNGNUY1RjUgIWltcG9ydGFudDsNCiAgYm9yZGVyLXJhZGl1czogMTJweCAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsNCn0NCiNicnhlLW9wMDgzaCAuYnJ4ZS1pbWFnZXsgbWF4LXdpZHRoOiA3MHB4ICFpbXBvcnRhbnQ7IH0NCiNicnhlLW9wMDgzaCAuYnJ4ZS1pbWFnZSBpbWd7IHdpZHRoOiA3MHB4ICFpbXBvcnRhbnQ7IGhlaWdodDogNzBweCAhaW1wb3J0YW50OyBvYmplY3QtZml0OiBjb250YWluICFpbXBvcnRhbnQ7IH0NCiNicnhlLW9wMDgzaCBoMy5icnhlLWhlYWRpbmd7DQogIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7DQogIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDsgZm9udC1zaXplOiAyMHB4ICFpbXBvcnRhbnQ7DQogIGNvbG9yOiAjMUQxNzYwICFpbXBvcnRhbnQ7IG1hcmdpbjogMCAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AwODNoIC5icnhlLWJsb2NrIHAuYnJ4ZS10ZXh0LWJhc2ljew0KICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDsgY29sb3I6ICMxRDE3NjAgIWltcG9ydGFudDsNCiAgbGluZS1oZWlnaHQ6IDEuNSAhaW1wb3J0YW50OyBtYXJnaW46IDAgIWltcG9ydGFudDsNCiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsNCiAgd2hpdGUtc3BhY2U6IHByZS1saW5lICFpbXBvcnRhbnQ7DQp9DQoNCi8qID09PT0gTmVpZ2hib3Job29kcyAob3AwOTluKSA9PT09ICovDQojYnJ4ZS1vcDA5OW57IHBhZGRpbmc6IDYwcHggMjBweCAhaW1wb3J0YW50OyBtYXgtd2lkdGg6IDEyODBweCAhaW1wb3J0YW50OyBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OyByb3ctZ2FwOiAxOHB4ICFpbXBvcnRhbnQ7IH0NCiNicnhlLW9wMDk5biA+IGgyLmJyeGUtaGVhZGluZ3sNCiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsNCiAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50OyBmb250LXNpemU6IDMycHggIWltcG9ydGFudDsNCiAgY29sb3I6ICMxRDE3NjAgIWltcG9ydGFudDsgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7DQp9DQojYnJ4ZS1vcDA5OW4gPiBwLmJyeGUtdGV4dC1iYXNpY3sNCiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7IGNvbG9yOiAjMUQxNzYwICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50Ow0KICBtYXgtd2lkdGg6IDkwMHB4ICFpbXBvcnRhbnQ7IG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7DQp9DQojYnJ4ZS1vcDA5OW4gPiAuYnJ4ZS1ibG9ja3sNCiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsNCiAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgZ2FwOiAxMHB4ICFpbXBvcnRhbnQ7DQp9DQojYnJ4ZS1vcDA5OW4gPiAuYnJ4ZS1ibG9jayA+IC5icnhlLXRleHQtYmFzaWN7DQogIHBhZGRpbmc6IDhweCAxNnB4ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6ICNGMUY1RjkgIWltcG9ydGFudDsNCiAgYm9yZGVyLXJhZGl1czogOTk5cHggIWltcG9ydGFudDsgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7DQogIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDsgY29sb3I6ICMxRDE3NjAgIWltcG9ydGFudDsNCiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7IHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsNCn0NCg0KLyogPT09PSBMYW5kbWFya3MgKG9wMTEzbCkgPT09PSAqLw0KI2JyeGUtb3AxMTNseyBwYWRkaW5nOiA1MHB4IDIwcHggIWltcG9ydGFudDsgbWF4LXdpZHRoOiAxMTAwcHggIWltcG9ydGFudDsgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsgfQ0KI2JyeGUtb3AxMTNsID4gaDIuYnJ4ZS1oZWFkaW5new0KICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50Ow0KICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMzJweCAhaW1wb3J0YW50Ow0KICBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbTogMTZweCAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AxMTNsID4gcC5icnhlLXRleHQtYmFzaWN7DQogIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OyBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDsNCiAgY29sb3I6ICMxRDE3NjAgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6IDEuNiAhaW1wb3J0YW50Ow0KICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50OyBtYXgtd2lkdGg6IDkwMHB4ICFpbXBvcnRhbnQ7IG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7DQp9DQoNCi8qID09PT0gRkFRIChvcDExNmYpIG5hdnkgYmcgPT09PSAqLw0KI2JyeGUtb3AxMTZmew0KICBiYWNrZ3JvdW5kOiAjMUQxNzYwICFpbXBvcnRhbnQ7DQogIHBhZGRpbmc6IDYwcHggMjBweCAhaW1wb3J0YW50OyBtYXgtd2lkdGg6IG5vbmUgIWltcG9ydGFudDsNCiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgbWFyZ2luOiAwICFpbXBvcnRhbnQ7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsgcm93LWdhcDogMjBweCAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AxMTZmID4gaDIuYnJ4ZS1oZWFkaW5new0KICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50Ow0KICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMzJweCAhaW1wb3J0YW50Ow0KICBjb2xvcjogI0ZGRkZGRiAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsNCn0NCiNicnhlLW9wMTE2ZiA+IC5icnhlLWltYWdleyBtYXgtd2lkdGg6IDI2MHB4ICFpbXBvcnRhbnQ7IG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7IH0NCiNicnhlLW9wMTE2ZiA+IC5icnhlLWltYWdlIGltZ3sgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IH0NCiNicnhlLW9wMTE2ZiA+IC5icnhlLWJsb2Nrew0KICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsNCiAgZ2FwOiAxNnB4ICFpbXBvcnRhbnQ7IG1heC13aWR0aDogMTEwMHB4ICFpbXBvcnRhbnQ7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7DQp9DQojYnJ4ZS1vcDExNmYgPiAuYnJ4ZS1ibG9jayA+IC5icnhlLWJsb2Nrew0KICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMDYpICFpbXBvcnRhbnQ7DQogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xKSAhaW1wb3J0YW50Ow0KICBib3JkZXItcmFkaXVzOiA4cHggIWltcG9ydGFudDsgcGFkZGluZzogMjBweCAyNHB4ICFpbXBvcnRhbnQ7DQogIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OyBnYXA6IDhweCAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AxMTZmIGgzLmJyeGUtaGVhZGluZ3sNCiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsNCiAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50OyBmb250LXNpemU6IDIwcHggIWltcG9ydGFudDsNCiAgY29sb3I6ICNGRkZGRkYgIWltcG9ydGFudDsgbWFyZ2luOiAwICFpbXBvcnRhbnQ7DQp9DQojYnJ4ZS1vcDExNmYgcC5icnhlLXRleHQtYmFzaWN7DQogIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7DQogIGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50OyBjb2xvcjogI0ZGRkZGRiAhaW1wb3J0YW50Ow0KICBsaW5lLWhlaWdodDogMS41NSAhaW1wb3J0YW50OyBtYXJnaW46IDAgIWltcG9ydGFudDsNCiAgb3BhY2l0eTogMC45MiAhaW1wb3J0YW50Ow0KfQ0KDQovKiA9PT09IE5lYXJieSBjaXRpZXMgKG9wMTM4bikgPT09PSAqLw0KI2JyeGUtb3AxMzhueyBwYWRkaW5nOiA1MHB4IDIwcHggIWltcG9ydGFudDsgbWF4LXdpZHRoOiAxMjgwcHggIWltcG9ydGFudDsgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsgcm93LWdhcDogMjBweCAhaW1wb3J0YW50OyB9DQojYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmd7DQogIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7DQogIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDsgZm9udC1zaXplOiAyMnB4ICFpbXBvcnRhbnQ7DQogIGNvbG9yOiAjMUQxNzYwICFpbXBvcnRhbnQ7IHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AxMzhuID4gLmJyeGUtYmxvY2t7DQogIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7DQogIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IGdhcDogMTJweCAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AxMzhuID4gLmJyeGUtYmxvY2sgPiBhLmJyeGUtYnV0dG9uew0KICBwYWRkaW5nOiAxMHB4IDE4cHggIWltcG9ydGFudDsgYmFja2dyb3VuZDogI0YxRjVGOSAhaW1wb3J0YW50Ow0KICBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOiA5OTlweCAhaW1wb3J0YW50Ow0KICBmb250LWZhbWlseTogJ1JvYm90bycsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6IDUwMCAhaW1wb3J0YW50Ow0KICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDsgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7DQogIGJvcmRlcjogMXB4IHNvbGlkICNFMkU4RjAgIWltcG9ydGFudDsgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50Ow0KfQ0KI2JyeGUtb3AxMzhuID4gLmJyeGUtYmxvY2sgPiBhLmJyeGUtYnV0dG9uew0KICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2UsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlICFpbXBvcnRhbnQ7DQp9DQojYnJ4ZS1vcDEzOG4gPiAuYnJ4ZS1ibG9jayA+IGEuYnJ4ZS1idXR0b246aG92ZXIsDQojYnJ4ZS1vcDEzOG4gPiAuYnJ4ZS1ibG9jayA+IGEuYnJ4ZS1idXR0b246Zm9jdXN7DQogIGJhY2tncm91bmQ6ICNFMkU4RjAgIWltcG9ydGFudDsgY29sb3I6ICMxRDE3NjAgIWltcG9ydGFudDsNCiAgYm9yZGVyLWNvbG9yOiAjMzBDNUZGICFpbXBvcnRhbnQ7IG91dGxpbmU6IDJweCBzb2xpZCAjMzBDNUZGICFpbXBvcnRhbnQ7IG91dGxpbmUtb2Zmc2V0OiAycHggIWltcG9ydGFudDsNCn0NCg0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICBSRVNQT05TSVZFDQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8NCg0KLyogVGFibGV0IDEwMjQgZG93biDigJQgc2VydmljZXMgMi1jb2wsIHN0ZXBzIHN0YWNrZWQsIG1hcCBzdGFja2VkICovDQpAbWVkaWEgKG1heC13aWR0aDogMTAyM3B4KXsNCiAgI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2t7DQogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgIWltcG9ydGFudDsNCiAgfQ0KICAjYnJ4ZS1vcDAxOW0gPiAuYnJ4ZS1ibG9jayA+IC5icnhlLWJsb2NrOm50aC1vZi10eXBlKDIpew0KICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7DQogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsNCiAgfQ0KICAjYnJ4ZS1vcDAzMXMgPiAuYnJ4ZS1ibG9jaywNCiAgI2JyeGUtb3AwODNoID4gLmJyeGUtYmxvY2ssDQogICNicnhlLW9wMDY1ciA+IC5icnhlLWJsb2Nrew0KICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcikgIWltcG9ydGFudDsNCiAgfQ0KfQ0KDQovKiBNb2JpbGUgNzY3IGRvd24g4oCUIGFsbCBzaW5nbGUgY29sdW1uICovDQpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpew0KICAjYnJ4ZS1vcDAzMXMgPiAuYnJ4ZS1ibG9jaywNCiAgI2JyeGUtb3AwODNoID4gLmJyeGUtYmxvY2ssDQogICNicnhlLW9wMDY1ciA+IC5icnhlLWJsb2Nrew0KICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7DQogIH0NCiAgI2JyeGUtb3AwMDFoeyBwYWRkaW5nOiA0MHB4IDE2cHggNjBweCAhaW1wb3J0YW50OyB9DQogICNicnhlLW9wMDAxaCBoMS5icnhlLWhlYWRpbmd7DQogICAgZm9udC1zaXplOiAzMnB4ICFpbXBvcnRhbnQ7DQogIH0NCiAgI2JyeGUtb3AwMDFoID4gLmJyeGUtdGV4dC1iYXNpY3sgZm9udC1zaXplOiAxOHB4ICFpbXBvcnRhbnQ7IH0NCiAgI2JyeGUtb3AwMDFoID4gLmJyeGUtYmxvY2s6bGFzdC1vZi10eXBlIGEuYnJ4ZS1idXR0b257DQogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgbWF4LXdpZHRoOiAzNjBweCAhaW1wb3J0YW50Ow0KICB9DQogICNicnhlLW9wMTE2ZnsgcGFkZGluZzogNDBweCAxNnB4ICFpbXBvcnRhbnQ7IH0NCiAgI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2sgPiAuYnJ4ZS1ibG9jazpudGgtb2YtdHlwZSgxKSAuYnJ4ZS1jb2Rlew0KICAgIGFzcGVjdC1yYXRpbzogNC8zICFpbXBvcnRhbnQ7DQogICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsNCiAgICBib3JkZXItcmFkaXVzOiAxMnB4ICFpbXBvcnRhbnQ7DQogIH0NCiAgI2JyeGUtb3AwMTltID4gLmJyeGUtYmxvY2sgPiAuYnJ4ZS1ibG9jazpudGgtb2YtdHlwZSgxKSAuYnJ4ZS1jb2RlIGlmcmFtZXsNCiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsgaW5zZXQ6IDAgIWltcG9ydGFudDsNCiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsNCiAgfQ0KICAjYnJ4ZS1vcDAwMWggPiAuYnJ4ZS1pbWFnZXsgaGVpZ2h0OiAyODBweCAhaW1wb3J0YW50OyB9DQp9DQoNCi8qIEJTUF9BUFIyOF9XSURUSF9PVkVSUklERV9QRVJfRE9DX0xJTkVfMTM2NSDigJQgY29kZWJhc2UgZG9jIHZlcmJhdGltOg0KICAgImJzcC1wYWdlLWNzcy04IHNldHMgZml4ZWQgcHggd2lkdGhzICgxMTQwcHgsIDEzNDRweCBldGMpLiBPbiBtb2JpbGUgdGhlc2UNCiAgICBvdmVyZmxvdy4gRml4OiBibGFua2V0IFtpZF49YnJ4ZS1dIHsgd2lkdGg6IDEwMCUgfSBpbiBtZWRpYSBxdWVyeS4iDQogICBSZWZlcmVuY2UgaW1wbDogZnVuY3Rpb25zLnBocCBsaW5lIDM2MCAocGFnZSA4KS4gQXBwbGllZCB0byAxNSBsb2NhdGlvbiBQSURzDQogICBwZXIgwqcxNSBCU1AgUGFnZSBOIENTUyBNaXJyb3IuIEFwciAxNyBhcHBlbmQgcnVsZSBob25vcmVkIChuZXcgQG1lZGlhIGF0IGVuZCkuICovDQoNCkBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCl7DQogIGJvZHkucGFnZS1pZC0yNTggW2lkXj0iYnJ4ZS0iXSwgYm9keS5wYWdlLWlkLTI4NSBbaWRePSJicnhlLSJdLA0KICBib2R5LnBhZ2UtaWQtMjkzIFtpZF49ImJyeGUtIl0sIGJvZHkucGFnZS1pZC0yOTQgW2lkXj0iYnJ4ZS0iXSwgYm9keS5wYWdlLWlkLTI5NSBbaWRePSJicnhlLSJdLA0KICBib2R5LnBhZ2UtaWQtMjk2IFtpZF49ImJyeGUtIl0sIGJvZHkucGFnZS1pZC0yOTcgW2lkXj0iYnJ4ZS0iXSwgYm9keS5wYWdlLWlkLTI5OCBbaWRePSJicnhlLSJdLA0KICBib2R5LnBhZ2UtaWQtMjk5IFtpZF49ImJyeGUtIl0sIGJvZHkucGFnZS1pZC0zMDAgW2lkXj0iYnJ4ZS0iXSwgYm9keS5wYWdlLWlkLTMwMSBbaWRePSJicnhlLSJdLA0KICBib2R5LnBhZ2UtaWQtMzAyIFtpZF49ImJyeGUtIl0sIGJvZHkucGFnZS1pZC0zMDMgW2lkXj0iYnJ4ZS0iXSwgYm9keS5wYWdlLWlkLTMwNCBbaWRePSJicnhlLSJdLA0KICBib2R5LnBhZ2UtaWQtMzA1IFtpZF49ImJyeGUtIl0gew0KICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7DQogICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7DQogICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50Ow0KICAgIG1pbi13aWR0aDogMCAhaW1wb3J0YW50Ow0KICB9DQogIGJvZHkucGFnZS1pZC0yNTggaW1nLCBib2R5LnBhZ2UtaWQtMjg1IGltZywNCiAgYm9keS5wYWdlLWlkLTI5MyBpbWcsIGJvZHkucGFnZS1pZC0yOTQgaW1nLCBib2R5LnBhZ2UtaWQtMjk1IGltZywNCiAgYm9keS5wYWdlLWlkLTI5NiBpbWcsIGJvZHkucGFnZS1pZC0yOTcgaW1nLCBib2R5LnBhZ2UtaWQtMjk4IGltZywNCiAgYm9keS5wYWdlLWlkLTI5OSBpbWcsIGJvZHkucGFnZS1pZC0zMDAgaW1nLCBib2R5LnBhZ2UtaWQtMzAxIGltZywNCiAgYm9keS5wYWdlLWlkLTMwMiBpbWcsIGJvZHkucGFnZS1pZC0zMDMgaW1nLCBib2R5LnBhZ2UtaWQtMzA0IGltZywNCiAgYm9keS5wYWdlLWlkLTMwNSBpbWcgeyBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IH0NCn0NCg0KDQovKiBCU1BfQVBSMjhfT1AwMDNIX09WQUxfUkVNT1ZFRCDigJQgRElTQUJMRUQgMjAyNi0wNS0wOCAodjI1YikgcGVyIEN5Y2xlIDQgYXZhaWwgY2hpcCAzLXN0YXRlIHNoaXAuDQogICBBcHIgMjgga2lsbGFsbCBzZXJ2ZWQgd2hlbiBjaGlwIHdhcyAnbG9uZyBvdmFsIHVuZGVyIHZhbicgcG9saXNoIHJlbW92YWwuDQogICB2MjVhIHJlLWludHJvZHVjZWQgY2hpcCBzdHlsaW5nICh3aGl0ZSBwaWxsLCBuYXZ5IHRleHQsIDo6YmVmb3JlIGNvbG9yZWQgZG90IHBlciBkYXRhLXN0YXRlKQ0KICAgcGVyIFJvYmVydCtLYWxlbiBBcHIgMjMgU2xhY2sgRE0gT3B0aW9uIEMuIEtpbGxhbGwgbm93IGJsb2NrcyBsZWdpdGltYXRlIHN0eWxpbmcg4oCUIGRpc2FibGVkLg0KICAgUG9zdG1ldGEgYWxzbyBjbGVhbmVkIHRvIG1hdGNoICh3aGl0ZSBiZywgbmF2eSB0ZXh0LCBwaWxsIHJhZGl1cykuIERpYWdub3N0aWM6IDQtcHJvYmUgZm91bmQNCiAgIGtpbGxhbGwgYXQgKDAsMiwyLDIpIHRpZWQgdjI1YSBDU1MgYnV0IGxvYWRlZCBsYXRlciDihpIgd29uIGJnL3BhZGRpbmcvcmFkaXVzL2JvcmRlciBiYXR0bGUuDQogICBTZWUgTUggYnNwLW1heTA4LWN5Y2xlNC12MjViLWtpbGxhbGwtZGlzYWJsZSArIGNvZGViYXNlIMKnODUuQ0MuICovDQoNCg0KLyogQlNQX0FQUjI4X0RJUkVDVElWRV8xX0ZBUV9IMyDigJQgQXByIDI0IGV2ZW5pbmcgRGlyZWN0aXZlIDEgc3BlYy4NCiAgIFBlciBNSCBwb2xpc2gtY29uc29saWRhdGVkOiAiaDMganVzdGlmeTogZmxleC1zdGFydCBbd2FzIHNwYWNlLWJldHdlZW5dIiArICJoMyBnYXA6IDEwcHggW3dhcyAxNnB4XSIuDQogICBUcmlwbGUtY2xhc3Mgc3BlYyAoMCwyLDUsNCkgdG8gYmVhdCBleHRyYWN0ZWRfMTY2J3MgZG91YmxlZC1jbGFzcyAoMCwyLDQsNCkgd2hpY2ggaGFkIHByZS1EaXJlY3RpdmUgdmFsdWVzLiAqLw0KDQpodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMTE2ZiAjYnJ4ZS1vcDExOWYgPiAuYnJ4ZS1ibG9jayA+IGgzLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDExNmYgI2JyeGUtb3AxMTlmID4gLmJyeGUtYmxvY2sgPiBoMy5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMTE2ZiAjYnJ4ZS1vcDExOWYgPiAuYnJ4ZS1ibG9jayA+IGgzLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDExNmYgI2JyeGUtb3AxMTlmID4gLmJyeGUtYmxvY2sgPiBoMy5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMTE2ZiAjYnJ4ZS1vcDExOWYgPiAuYnJ4ZS1ibG9jayA+IGgzLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDExNmYgI2JyeGUtb3AxMTlmID4gLmJyeGUtYmxvY2sgPiBoMy5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMTE2ZiAjYnJ4ZS1vcDExOWYgPiAuYnJ4ZS1ibG9jayA+IGgzLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDExNmYgI2JyeGUtb3AxMTlmID4gLmJyeGUtYmxvY2sgPiBoMy5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AxMTZmICNicnhlLW9wMTE5ZiA+IC5icnhlLWJsb2NrID4gaDMuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMTE2ZiAjYnJ4ZS1vcDExOWYgPiAuYnJ4ZS1ibG9jayA+IGgzLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDExNmYgI2JyeGUtb3AxMTlmID4gLmJyeGUtYmxvY2sgPiBoMy5icnhlLWhlYWRpbmcgew0KICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsNCiAgZ2FwOiAxMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCg0KLyogQlNQX0FQUjI4X0xFRlRfQUxJR05fSEVBRElOR1Mg4oCUIGxlZnQtYWxpZ24gc2VjdGlvbiBIMi9IMyBoZWFkaW5ncyB0byBtYXRjaCBtYXAgKyBjb250ZW50IHBhcmFncmFwaHMuDQogICBSb2JlcnQgZGlyZWN0aXZlOiAibGVmdCBhbGlnbm1lbnQgd2l0aCB0aGUgbWFwIi4gQXByIDI0IHBvbGlzaCBoYWQgaGVhZGluZ3MgY2VudGVyZWQ7DQogICB0b2RheSBSb2JlcnQgcmVxdWVzdHMgbGVmdC1hbGlnbiBjb25zaXN0ZW5jeSB3aXRoIGJvZHkgY29udGVudC4gVHJpcGxlLWNsYXNzIHNwZWMgdG8gd2luIGNhc2NhZGUuICovDQoNCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwNjVyID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AxMTNsID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMTE2ZiA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwNjVyID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AxMTNsID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMTE2ZiA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AwNjVyID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AxMTNsID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMTE2ZiA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AwNjVyID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AxMTNsID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMTE2ZiA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwNjVyID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AxMTNsID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMTE2ZiA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AwNjVyID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AxMTNsID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMTE2ZiA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AwNjVyID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AxMTNsID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMTE2ZiA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwNjVyID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AxMTNsID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMTE2ZiA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AwNjVyID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AxMTNsID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMTE2ZiA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AwNjVyID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AxMTNsID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMTE2ZiA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwNjVyID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AxMTNsID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMTE2ZiA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AwNjVyID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AxMTNsID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMTE2ZiA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AwNjVyID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AxMTNsID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMTE2ZiA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwNjVyID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AxMTNsID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMTE2ZiA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AwNjVyID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDA5OW4gPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AxMTNsID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMTE2ZiA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AxMzhuID4gaDMuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMTM4biA+IGgzLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AxMzhuID4gaDMuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMTM4biA+IGgzLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AxMzhuID4gaDMuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMTM4biA+IGgzLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AxMzhuID4gaDMuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMTM4biA+IGgzLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDEzOG4gPiBoMy5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AxMzhuID4gaDMuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMTM4biA+IGgzLmJyeGUtaGVhZGluZyB7DQogIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsNCiAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsNCiAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7DQp9DQoNCg0KLyogQlNQX0FQUjI4X0hFUk9fTEVGVF9BTElHTiDigJQgZXh0ZW5kICJsZWZ0IGFsaWdubWVudCB3aXRoIHRoZSBtYXAiIHRvIEhlcm8gSDEgKyBzdWJ0aXRsZSAqLw0KaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDAxaCBoMS5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMDFoIGgxLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAwMWggaDEuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDAxaCBoMS5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMDFoIGgxLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAwMWggaDEuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDAxaCBoMS5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMDFoIGgxLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAwMWggaDEuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDAxaCBoMS5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMDFoIGgxLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAwMWggaDEuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDAxaCBoMS5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMDFoIGgxLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAwMWggaDEuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDAxaCA+IHAuYnJ4ZS10ZXh0LWJhc2ljIHsNCiAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50Ow0KICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50Ow0KICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsNCn0NCg0KDQovKiBCU1BfQVBSMjhfT1AwMjRNX0tJTExBTExfUEVSX0FQUjI0IOKAlCBESVNBQkxFRCAyMDI2LTA1LTA4IHBlciBSb2JlcnQgZGlyZWN0aXZlLg0KICAgT3JpZ2luYWwgcHVycG9zZTogaGlkZSBvcDAyNG0gZHVwbGljYXRlIHRydXN0LWNoaXAgc2lkZWJhciAoQXByIDI0IGVyYSBoYWQgb3AwMTF0IGlubGluZSArIG9wMDI0bSBzaWRlYmFyID0gZHVwbGljYXRlKS4NCiAgIEF1ZHJleSA0MDMzOjI5OCBzcGVjaWZpZXMgdGhlIG9wMDI0bSBzaWRlYmFyIFNIT1VMRCBzaG93IDYgdHJ1c3QgY2hpcHMuDQogICBNYXkgOCBhdWRpdDogb3AwMTF0IG5vIGxvbmdlciBleGlzdHMgaW4gcG9zdG1ldGEgLSBraWxsYWxsIGlzIG9ic29sZXRlLg0KICAgUmUtZW5hYmxlIHdvdWxkIHJlLWhpZGUgdHJ1c3QgY2hpcHMuIEZ1bGwgZm9yZW5zaWNzOiBjb2RlYmFzZSBTZWN0aW9uIDg1LkFBLg0KKi8NCg0KDQovKiBCU1BfQVBSMjhfTUFQX0FTUEVDVF9SQVRJT19QRVJfQVBSMjQg4oCUIHJlc3RvcmUgQXByIDI0IGRvY3VtZW50ZWQgbWFwIGFzcGVjdC4NCiAgIFNvdXJjZTogTUggYnNwLWFwcjI0LW9wMjU4LWhlcm8tb3ZhbC1yZW1vdmVkLW1hcC1yZWZhY3RvcmVkLXNoaXBwZWQuDQogICBBcHIgMjQgc3BlYzogMjE6OSBkZXNrdG9wIChwYW5vcmFtaWMgbGV0dGVyYm94KSwgNDozIG1vYmlsZS4NCiAgIEhpZ2hlciBzcGVjaWZpY2l0eSB0aGFuIHNuaXBwZXQgMTcxJ3MgLmJzcC1tYXAtZnJhbWUgKDAsMCwxLDApIOKAlCB1c2VzIDItSUQgY2hhaW4gKDAsMiwyLDIpLiAqLw0KDQpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsNCiAgaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lIHsNCiAgICBhc3BlY3QtcmF0aW86IDIxIC8gOSAhaW1wb3J0YW50Ow0KICB9DQogIEBzdXBwb3J0cyBub3QgKGFzcGVjdC1yYXRpbzogMjEvOSkgew0KICAgIGh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSB7DQogICAgICBwYWRkaW5nLXRvcDogNDIuODU3JSAhaW1wb3J0YW50OyAvKiA5LzIxID0gMC40Mjg1NyAqLw0KICAgIH0NCiAgfQ0KfQ0KQG1lZGlhIChtYXgtd2lkdGg6IDk5MXB4KSB7DQogIGh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSB7DQogICAgYXNwZWN0LXJhdGlvOiA0IC8gMyAhaW1wb3J0YW50Ow0KICB9DQogIEBzdXBwb3J0cyBub3QgKGFzcGVjdC1yYXRpbzogNC8zKSB7DQogICAgaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDE5bSAuYnNwLW1hcC1mcmFtZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAxOW0gLmJzcC1tYXAtZnJhbWUsDQpodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AwMTltIC5ic3AtbWFwLWZyYW1lIHsNCiAgICAgIHBhZGRpbmctdG9wOiA3NSUgIWltcG9ydGFudDsNCiAgICB9DQogIH0NCn0NCg0KDQovKiBCU1BfQVBSMjhfQUxJR05fRVZFTkxZX1dJVEhfTUFQIOKAlCBSb2JlcnQgZGlyZWN0aXZlOiAibGVmdCBhbGlnbiBoZWFkZXJzIG5lZWQgdG8gYWN0dWFsbHkNCiAgIGxlZnQgYWxnbiBldmVubHkgYWxvbmcgdGhlIG1hcCIuIEVtcGlyaWNhbCBQbGF5d3JpZ2h0IHByb2JlIGZvdW5kIDQgbWlzYWxpZ25tZW50czoNCiAgIC0gSGVybyBIMSArIHN1YnRpdGxlIGF0IHZpZXdwb3J0IGVkZ2UgKDBweCkgaW5zdGVhZCBvZiBzZWN0aW9uIHBhZGRpbmcgKDIwbW9iaWxlLzEwMGRlc2t0b3ApDQogICAtIEZBUSBzZWN0aW9uIHBhZGRpbmcgNDBweCAxNnB4IG9uIG1vYmlsZSAoc2hvdWxkIGJlIDYwIDIwKQ0KICAgLSBOZWFyYnkgc2VjdGlvbiBwYWRkaW5nIDUwcHggMjBweCBtYWtpbmcgSDMgbGFuZCBhdCAxMjAgZGVza3RvcCAobmVlZCAxMDAgdG8gbWF0Y2ggbWFwKSAqLw0KDQovKiBIZXJvIEgxICsgc3VidGl0bGUg4oCUIG1hdGNoIHNlY3Rpb24ncyAyMHB4IGNvbnRlbnQgZWRnZSAod2hpY2ggbWF0Y2hlcyBtYXAgbGVmdCkgKi8NCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMDFoID4gaDEuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDAxaCA+IGgxLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMDFoID4gaDEuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDAxaCA+IGgxLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMDFoID4gaDEuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDAxaCA+IGgxLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMDFoID4gaDEuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDAxaCA+IGgxLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAwMWggPiBoMS5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMDFoID4gaDEuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDAxaCA+IGgxLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywNCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywNCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywNCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywNCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAwMWggPiBwLmJyeGUtdGV4dC1iYXNpYyB7DQogIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7DQogIG1heC13aWR0aDogMTI4MHB4ICFpbXBvcnRhbnQ7DQogIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7DQogIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50Ow0KICBwYWRkaW5nLWxlZnQ6IDIwcHggIWltcG9ydGFudDsNCiAgcGFkZGluZy1yaWdodDogMjBweCAhaW1wb3J0YW50Ow0KICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7DQp9DQoNCi8qIEZBUSBzZWN0aW9uIOKAlCBtYXRjaCBtYXAgMjBweCBwYWRkaW5nIG9uIG1vYmlsZSAod2FzIDE2cHgpICovDQpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsNCiAgaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMTE2ZiwNCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDExNmYsDQpodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AxMTZmLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMTE2ZiwNCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDExNmYsDQpodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AxMTZmLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMTE2ZiwNCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDExNmYsDQpodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AxMTZmLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMTE2ZiwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDExNmYsDQpodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AxMTZmLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMTE2ZiwNCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDExNmYsDQpodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AxMTZmIHsNCiAgICBwYWRkaW5nLWxlZnQ6IDIwcHggIWltcG9ydGFudDsNCiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7DQogIH0NCn0NCg0KDQovKiBCU1BfQVBSMjhfT1AxMzhOX0dSSURfUEVSX0FQUjI0IOKAlCBOZWFyYnkgY2l0aWVzIGNoaXAgbGF5b3V0IHBlciBBcHIgMjQgTUgNCiAgIGJzcC1hcHIyNC1vcDI1OC1vcDEzOC1vcDE0MC1tb2JpbGUtcmVzcG9uc2l2ZS1zaGlwcGVkICh2ZXJiYXRpbSAzLXRpZXIgcmVzcG9uc2l2ZSkuDQogICBSb2JlcnQ6ICJjaXR5IHBpbGxzIG1vcmUgb2YgYSBncmlkIHBhdHRlcm4gLyAyIHJvd3MiLg0KICAgQXByIDI0IHNwZWM6DQogICAgIERlc2t0b3A6IGZsZXgtd3JhcCB3cmFwLCBnYXAgMTBweCwgZm9udCAxM3B4LCBwYWRkaW5nIDhweCAxNnB4DQogICAgIFRhYmxldCAoPD05OTEpOiBnYXAgOHB4LCBmb250IDEycHgsIHBhZGRpbmcgNnB4IDEycHgNCiAgICAgUGhvbmUgICg8PTQ4MCk6IDItY29sdW1uIGdyaWQgdmlhIGZsZXggMCAxIGNhbGMoNTAlIC0gNHB4KSwgZm9udCAxMS41LCBwYWRkaW5nIDdweCA4cHggKi8NCg0KLyogRGVza3RvcCBkZWZhdWx0ICovDQpodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwNCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sDQpodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwNCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sDQpodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwNCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sDQpodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sDQpodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwNCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gew0KICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7DQogIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsNCiAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7DQogIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50Ow0KICBnYXA6IDEwcHggIWltcG9ydGFudDsNCn0NCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sDQpodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwNCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sDQpodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sDQpodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sDQpodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sDQpodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiB7DQogIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsNCiAgZ2FwOiA2cHggIWltcG9ydGFudDsNCiAgZm9udC1zaXplOiAxM3B4ICFpbXBvcnRhbnQ7DQogIHBhZGRpbmc6IDhweCAxNnB4ICFpbXBvcnRhbnQ7DQogIGZsZXg6IDAgMCBhdXRvICFpbXBvcnRhbnQ7DQp9DQoNCi8qIFRhYmxldCDiiaQ5OTFweCDigJQgQXByIDI0IHNwZWMgKi8NCkBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkgew0KICBodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwNCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sDQpodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwNCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sDQpodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwNCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sDQpodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sDQpodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwNCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gew0KICAgIGdhcDogOHB4ICFpbXBvcnRhbnQ7DQogIH0NCiAgaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwNCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sDQpodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwNCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sDQpodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwNCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sDQpodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sDQpodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwNCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sDQpodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uIHsNCiAgICBmb250LXNpemU6IDEycHggIWltcG9ydGFudDsNCiAgICBwYWRkaW5nOiA2cHggMTJweCAhaW1wb3J0YW50Ow0KICB9DQp9DQoNCi8qIFBob25lIOKJpDQ4MHB4IOKAlCAyLWNvbHVtbiBncmlkIEFwciAyNCB2ZXJiYXRpbSAqLw0KQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7DQogIGh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sDQpodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwNCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sDQpodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sDQpodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sDQpodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4sDQpodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiB7DQogICAgZ2FwOiA2cHggIWltcG9ydGFudDsNCiAgfQ0KICBodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwNCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sDQpodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sDQpodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwNCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sDQpodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24sDQpodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AxMzhuICNicnhlLW9wMTQwbiBhLmJyeGUtYnV0dG9uLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMTM4biAjYnJ4ZS1vcDE0MG4gYS5icnhlLWJ1dHRvbiwNCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDEzOG4gI2JyeGUtb3AxNDBuIGEuYnJ4ZS1idXR0b24gew0KICAgIGZsZXg6IDAgMSBjYWxjKDUwJSAtIDRweCkgIWltcG9ydGFudDsNCiAgICBmb250LXNpemU6IDExLjVweCAhaW1wb3J0YW50Ow0KICAgIHBhZGRpbmc6IDdweCA4cHggIWltcG9ydGFudDsNCiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsICFpbXBvcnRhbnQ7DQogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7DQogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsNCiAgfQ0KfQ0KDQoNCi8qIEJTUF9BUFIyOF9PUDEwMk5fRk9SQ0VfR1JJRCDigJQgRElTQUJMRUQgMjAyNi0wNS0wOCAodjI2LjMpIHBlciBDeWNsZSA0IE5XUyBncmlkIHNoaXAuDQogICB2MjYuMiBmaXhlZCBOV1MgZ3JpZCB2aWEgI2JyeC1jb250ZW50ICNicnhlLW9wMDk5biAjYnJ4ZS1vcDEwMm4gaW4gc3R5bGUuY3NzIEdST1VQIDE0Lg0KICAgVGhpcyB3cF9oZWFkIGVtaXR0ZXIgYXQgKDAsMiwzLDIpIGxvc2VzIGNhc2NhZGUgdG8gYnJpY2tzLWNoaWxkIHJ1bGUgKDAsMywwLDApIOKAlCBkZWFkIGNvZGUuDQogICBEaXNhYmxlZCB0byByZWR1Y2Ugc3VyZmFjZSBhcmVhICsgc2ltcGxpZnkgY2FzY2FkZSByZWFzb25pbmcuDQogICBDaXRlOiDCpzg1LkREIElELWNvdW50IHByaW1hY3kgKyDCpzg1LkFBIGtpbGxhbGwtZGlzYWJsZSBwYXR0ZXJuLiAqLw0KLyogQlNQX0FQUjI4X09QMDM0U19GT1JDRV9HUklEIOKAlCBmb3JjZSBvcDAzNHMgZGlzcGxheTpncmlkIHBlciBBcHIgMjQgc3BlYy4NCiAgIFNvdXJjZTogZXh0cmFjdGVkXzE2Mi50eHQgU0VDVElPTiA0IHZlcmJhdGltICJodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwMzRzIHsNCiAgICAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50OyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSkgIWltcG9ydGFudDsgfSINCiAgIEN1cnJlbnRseSAjMTQ4IHNldHMgZGlzcGxheTpmbGV4IGF0IHNhbWUgc3BlY2lmaWNpdHkgKDAsMSwyLDIpLiBUcmlwbGUtY2xhc3Mgd2lucy4gKi8NCg0KaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsDQpodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzIHsNCiAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50Ow0KICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSkgIWltcG9ydGFudDsNCiAgZ3JpZC1hdXRvLXJvd3M6IDFmciAhaW1wb3J0YW50Ow0KICBnYXA6IDI0cHggIWltcG9ydGFudDsNCiAgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsNCiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsNCiAgZmxleC1kaXJlY3Rpb246IHVuc2V0ICFpbXBvcnRhbnQ7DQogIGZsZXgtd3JhcDogdW5zZXQgIWltcG9ydGFudDsNCn0NCg0KaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNXMsDQpodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywNCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNXMsDQpodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywNCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNXMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywNCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNXMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywNCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNXMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywNCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNXMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNXMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNXMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNXMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNXMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1MHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNXMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1MHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNXMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1MHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNXMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1MHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNXMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1MHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNXMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNDVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1MHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNjBzIHsNCiAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50Ow0KICBncmlkLXRlbXBsYXRlLXJvd3M6IDE4MHB4IGF1dG8gYXV0byAxZnIgYXV0byAhaW1wb3J0YW50Ow0KICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsNCiAgYWxpZ24taXRlbXM6IHN0YXJ0ICFpbXBvcnRhbnQ7DQogIGhlaWdodDogMTAwJSAhaW1wb3J0YW50Ow0KICBmbGV4LWRpcmVjdGlvbjogdW5zZXQgIWltcG9ydGFudDsNCiAgZmxleC13cmFwOiB1bnNldCAhaW1wb3J0YW50Ow0KfQ0KDQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDIzcHgpIHsNCiAgaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsDQpodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzIHsNCiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSkgIWltcG9ydGFudDsNCiAgfQ0KfQ0KDQpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsNCiAgaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsDQpodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDAzNHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDM0cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzRzIHsNCiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAhaW1wb3J0YW50Ow0KICB9DQp9DQoNCg0KLyogQlNQX0FQUjI4X01BUF9GVUxMX1dJRFRIX0FGVEVSX09QMDI0TV9ISURFIOKAlCBBcHIgMjQgZG9jdW1lbnRlZCBzcGVjLg0KICAgU291cmNlOiBNSCBic3AtYXByMjQtb3AyNTgtaGVyby1vdmFsLXJlbW92ZWQtbWFwLXJlZmFjdG9yZWQtc2hpcHBlZCAodmVyYmF0aW0pOg0KICAgIm1hcF93cmFwX3c6IDEyNDBweCAoZnVsbCBjb250ZW50IHdpZHRoKSIgKyAibWFwX2ZyYW1lX3cgeCBoOiAxMjQwIHggNTMxIHJhdGlvIDIxOjkiLg0KICAgV2hlbiBvcDAyNG0gc2lkZWJhciBoaWRkZW4gKEZpeCAjNyksIGdyaWQgbXVzdCBjb2xsYXBzZSBmcm9tICIxZnIgMzYwcHgiIOKGkiAiMWZyIiBzbyBtYXAgZmlsbHMNCiAgIHRoZSBmdWxsIDEyNDBweCBjb250ZW50IHdpZHRoLiBUcmlwbGUtY2xhc3Mgc3BlYyB0byBiZWF0ICMxNDggKyBBcHIgMjQgcG9saXNoIGF0ICgwLDEsMiwyKS4gKi8NCg0KaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrIHsNCiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgIWltcG9ydGFudDsNCiAgZ2FwOiAwICFpbXBvcnRhbnQ7DQp9DQoNCkBtZWRpYSAobWF4LXdpZHRoOiAxMDIzcHgpIHsNCiAgaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDE5bSA+IC5icnhlLWJsb2NrIHsNCiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAhaW1wb3J0YW50Ow0KICB9DQp9DQoNCg0KLyogQlNQX0FQUjI4X0hJV19IMl9NQVRDSF9PVEhFUlMg4oCUIEFwciAyNCBGaXggRCBzZXQgSElXIEgyIDU2cHggY2xhbXA7IFJvYmVydCBvdmVycmlkZSBBcHIgMjgNCiAgIHdhbnRzIEhJVyBIMiBzYW1lIHNpemUgYXMgb3RoZXIgc2VjdGlvbiBIMnMgKDMycHggZGVza3RvcCwgMjJweCBtb2JpbGUpLiBUcmlwbGUtY2xhc3Mgc3BlYy4gKi8NCg0KaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AwODNoID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AwODNoID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AwODNoID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AwODNoID4gaDIuYnJ4ZS1oZWFkaW5nLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDgzaCA+IGgyLmJyeGUtaGVhZGluZywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDA4M2ggPiBoMi5icnhlLWhlYWRpbmcsDQpodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AwODNoID4gaDIuYnJ4ZS1oZWFkaW5nIHsNCiAgZm9udC1zaXplOiAzMnB4ICFpbXBvcnRhbnQ7DQogIGxpbmUtaGVpZ2h0OiAxLjIgIWltcG9ydGFudDsNCiAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsNCiAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50Ow0KICBjb2xvcjogIzFEMTc2MCAhaW1wb3J0YW50Ow0KfQ0KDQoNCi8qIEJTUF9BUFIyOF9TVkNfSUNPTl9GT1JDRV9DRU5URVJfVjIg4oCUIHNlcnZpY2UgaWNvbiB3cmFwcGVyIG5vdCBjZW50ZXJlZCAoeF9pbl9jYXJkPTI5IG1vYmlsZSAvIDEyMCBkZXNrdG9wKS4NCiAgIEFwciAyNCBwb2xpc2gtdjIgaGFzIGZsZXg6MCAwIDEzMHB4IHdoaWNoIGJlYXRzIG1hcmdpbjphdXRvIG9uIGdyaWQgaXRlbXMuDQogICBGaXg6IGp1c3RpZnktc2VsZiBjZW50ZXIgKyAxMDAlIHdpZHRoIG9uIGNhcmQsIGZvcmNlIHdyYXBwZXIgaW50byAxLWNvbCBncmlkIGNlbGwuDQogICBDYXJkIGV4cGxpY2l0bHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIDFmciDigJQgd3JhcHBlciBhdXRvIGNlbnRlcnMuICovDQoNCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDQ1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1NXMsDQpodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDYwcywNCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQ1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1NXMsDQpodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDYwcywNCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQ1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1NXMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDYwcywNCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQ1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1NXMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDYwcywNCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQ1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1NXMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDYwcywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQ1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1NXMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AwMzFzICNicnhlLW9wMDYwcywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQ1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1NXMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AwMzFzICNicnhlLW9wMDYwcywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDQ1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1NXMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDYwcywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0MHMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQ1cywNCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1NXMsDQpodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AwMzFzICNicnhlLW9wMDYwcywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0MHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQ1cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1NXMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AwMzFzICNicnhlLW9wMDYwcywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0MHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQ1cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1NXMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMzFzICNicnhlLW9wMDYwcywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0MHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQ1cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1NXMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AwMzFzICNicnhlLW9wMDYwcywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0MHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQ1cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1NXMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDYwcywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0MHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQ1cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1NXMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDYwcywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0MHMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQ1cywNCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA1NXMsDQpodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDYwcyB7DQogIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7DQp9DQoNCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OC5wYWdlLWlkLTI1OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yNTgucGFnZS1pZC0yNTgucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4LnBhZ2UtaWQtMjU4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NS5wYWdlLWlkLTI4NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yODUucGFnZS1pZC0yODUucGFnZS1pZC0yODUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1LnBhZ2UtaWQtMjg1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5My5wYWdlLWlkLTI5My5wYWdlLWlkLTI5MyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMucGFnZS1pZC0yOTMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzLnBhZ2UtaWQtMjkzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NC5wYWdlLWlkLTI5NCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQucGFnZS1pZC0yOTQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0LnBhZ2UtaWQtMjk0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NS5wYWdlLWlkLTI5NSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUucGFnZS1pZC0yOTUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1LnBhZ2UtaWQtMjk1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5Ni5wYWdlLWlkLTI5NiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYucGFnZS1pZC0yOTYgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2LnBhZ2UtaWQtMjk2ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5Ny5wYWdlLWlkLTI5NyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcucGFnZS1pZC0yOTcgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3LnBhZ2UtaWQtMjk3ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OC5wYWdlLWlkLTI5OCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yOTgucGFnZS1pZC0yOTgucGFnZS1pZC0yOTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4LnBhZ2UtaWQtMjk4ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OS5wYWdlLWlkLTI5OSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkucGFnZS1pZC0yOTkgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5LnBhZ2UtaWQtMjk5ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMC5wYWdlLWlkLTMwMCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAucGFnZS1pZC0zMDAgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwLnBhZ2UtaWQtMzAwICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMS5wYWdlLWlkLTMwMSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEucGFnZS1pZC0zMDEgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxLnBhZ2UtaWQtMzAxICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMi5wYWdlLWlkLTMwMiAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIucGFnZS1pZC0zMDIgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyLnBhZ2UtaWQtMzAyICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMy5wYWdlLWlkLTMwMyAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMucGFnZS1pZC0zMDMgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzLnBhZ2UtaWQtMzAzICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNC5wYWdlLWlkLTMwNCAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQucGFnZS1pZC0zMDQgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0LnBhZ2UtaWQtMzA0ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwMzVzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA0NXMgPiAuYnJ4ZS1pbWFnZSwNCmh0bWwgYm9keS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNS5wYWdlLWlkLTMwNSAjYnJ4ZS1vcDAzMXMgI2JyeGUtb3AwNTBzID4gLmJyeGUtaW1hZ2UsDQpodG1sIGJvZHkucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUucGFnZS1pZC0zMDUgI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cyA+IC5icnhlLWltYWdlLA0KaHRtbCBib2R5LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1LnBhZ2UtaWQtMzA1ICNicnhlLW9wMDMxcyAjYnJ4ZS1vcDA2MHMgPiAuYnJ4ZS1pbWFnZSB7DQogIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7DQogIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50Ow0KICBqdXN0aWZ5LXNlbGY6IGNlbnRlciAhaW1wb3J0YW50Ow0KICBhbGlnbi1zZWxmOiBzdGFydCAhaW1wb3J0YW50Ow0KICBmbGV4OiAwIDAgYXV0byAhaW1wb3J0YW50Ow0KICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7DQp9DQoNCg0KLyogQlNQX0FQUjI4X1NWQ19JQ09OX1VOSUZPUk1fU0NBTEVfVjIg4oCUIFJvYmVydDogInNlcnZpY2UgY2FyZHMgbmVlZCBzYW1lIHNpemUiLg0KICAgQXByIDI0IGhhZCBwZXItaWNvbiBzY2FsZXMgMC45NS0xLjM1IHRvIGNvbXBlbnNhdGUgUE5HIHdoaXRlc3BhY2U7IHVzZXIgc2VlcyB1bmV2ZW4uDQogICAzLUlEIGNoYWluICgwLDMsMSwyKSBiZWF0cyBBcHIgMjQgKDAsMywwLDEpIGJ5IGNsYXNzK2VsZW1lbnQgY291bnQuIEFsbCAxLjAgPSB1bmlmb3JtIDE3MHgxNzAuICovDQpodG1sIGJvZHkucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDM1cyBpbWcjYnJ4ZS1vcDAzNnMsDQpodG1sIGJvZHkucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDQwcyBpbWcjYnJ4ZS1vcDA0MXMsDQpodG1sIGJvZHkucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDQ1cyBpbWcjYnJ4ZS1vcDA0NnMsDQpodG1sIGJvZHkucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDUwcyBpbWcjYnJ4ZS1vcDA1MXMsDQpodG1sIGJvZHkucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDU1cyBpbWcjYnJ4ZS1vcDA1NnMsDQpodG1sIGJvZHkucGFnZS1pZC0yNTggI2JyeGUtb3AwMzFzICNicnhlLW9wMDYwcyBpbWcjYnJ4ZS1vcDA2MXMgew0KICB0cmFuc2Zvcm06IHNjYWxlKDEuMCkgIWltcG9ydGFudDsNCn0NCg0KQlNQTE9DQ1NTX0FQUjI4X0hFUkVET0NfRU5EOw0KICAgIGVjaG8gIlxuPC9zdHlsZT5cbiI7DQp9DQoNCi8qIEJTUF9BUFIyOF9PUDI1OF9QT0xJU0hfUkVTVE9SRURfRlJPTV9BUFIyNF9CQUNLVVANCiAgIFJlc3RvcmVkIEFwciAyNCBldmVuaW5nIHBvbGlzaCBjb250ZW50IHBlciBBcHIgMjQgcG9saXNoLWNvbnNvbGlkYXRlZCBwcm9jZWR1cmUuDQogICBTb3VyY2U6IC90bXAvcGF0Y2hfdjFfMjAyNi0wNC0yNC9jb25zb2xpZGF0ZS9leHRyYWN0ZWRfezE2MSwxNjIsMTY1LDE2Nn0udHh0DQogICBUaGVzZSBhcmUgdGhlIGV4YWN0IGJsb2NrcyB0aGF0IHdlcmUgaW5saW5lZCBBcHIgMjQgKFBoYXNlIEQuNSkgYnV0IGxvc3Qgd2hlbg0KICAgTDMuMSBsb2NhdGlvbl9zdHlsZXMgcG9ydCAoQXByIDI4IHNlc3Npb24gNCkgcmVwbGFjZWQgdGhlIGhlcmVkb2MuDQogICBQYWdlLWdhdGVkIHRvIE9QIDI1OCArIDE0IHNpYmxpbmcgbG9jYXRpb24gUElEcyBwZXIgwqcxNSBCU1AgUGFnZSBOIENTUyBNaXJyb3IuDQogICBXcF9oZWFkIHByaW9yaXR5IDE1MDAgdG8gZmlyZSBhZnRlciBsb2NhdGlvbl9zdHlsZXNfaW5qZWN0ICgxMDAwKSBhbmQgYmVhdA0KICAgU3RyYXRlZ3kgRiAjMTE1ICgxMTE1KS4gRWNob2VzIHJhdyA8c3R5bGU+LzxzY3JpcHQ+IGJsb2Nrcy4gKi8NCg0KYWRkX2FjdGlvbignd3BfaGVhZCcsICdic3Bfb3AyNThfcG9saXNoX3Jlc3RvcmVfaW5qZWN0JywgMTUwMCk7DQpmdW5jdGlvbiBic3Bfb3AyNThfcG9saXNoX3Jlc3RvcmVfaW5qZWN0KCkgew0KICAgIGlmIChpc19hZG1pbigpIHx8IHdwX2RvaW5nX2FqYXgoKSB8fCAoZGVmaW5lZCgnUkVTVF9SRVFVRVNUJykgJiYgUkVTVF9SRVFVRVNUKSkgcmV0dXJuOw0KICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2JyaWNrc19pc19idWlsZGVyX21haW4nKSAmJiBicmlja3NfaXNfYnVpbGRlcl9tYWluKCkpIHJldHVybjsNCiAgICAkbG9jX3BpZHMgPSBbMjU4LCAyODUsIDI5MywgMjk0LCAyOTUsIDI5NiwgMjk3LCAyOTgsIDI5OSwgMzAwLCAzMDEsIDMwMiwgMzAzLCAzMDQsIDMwNV07DQogICAgaWYgKCFpc19wYWdlKCRsb2NfcGlkcykpIHJldHVybjsNCiAgICBlY2hvICJcbjwhLS0gQlNQX0FQUjI4X09QMjU4X1BPTElTSF9SRVNUT1JFRCDigJQgQXByIDI0IHBvbGlzaCBjb250ZW50IC0tPlxuIjsNCiAgICANCn0NCg0KDQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogKiBQSUVDRSBDIChCU1BfUElFQ0VfQ19TQ0hFTUFfMjAyNjA1MDJfMjAyOTAzKQ0KICogU2VydmljZSBwYWdlIHNjaGVtYSBpbmplY3Rvci4gUEhQLW9ubHkuIE5PIENTUy4gTk8gSlMuDQogKiBNaXJyb3JzIGJzcF9sb2NhdGlvbl9zY2hlbWFfaW5qZWN0IChsaW5lIDE2NjQpLg0KICogU2NoZW1hLm9yZyBAZ3JhcGg6IExvY2FsQnVzaW5lc3MvUGx1bWJlciArIFNlcnZpY2UgKyBCcmVhZGNydW1iTGlzdCBwZXIgc2x1Zy4NCiAqIFRhcmdldDogOSBzZXJ2aWNlIFBJRHMgKDI4Ni8yODcvMjg4LzI4OS8yOTAvMjkxLzI5Mi84LzEyKS4NCiAqIFBlciBSNDA6IGNvZGViYXNlPWxpbmUgMTU4NDsgTUg9YnNwLWFwcjI3LUQ5OyBjaGF0PUNEIGJsdWVwcmludCBtc2dfMTc3Nzc3MTQyMTI1Mw0KICogUGVyIFI0NDogdGhpcyBmaWxlID0gUEhQIG9ubHkuIE5vIENTUyBsaXZlcyBoZXJlLg0KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0KJEJTUF9TRVJWSUNFUyA9IGFycmF5KA0KICAgICdzZXdlci1yZXBhaXInID0+IGFycmF5KA0KICAgICAgICAncGlkJyA9PiAyODYsDQogICAgICAgICdzZXJ2aWNlX25hbWUnID0+ICdTZXdlciBMaW5lIFJlcGFpciBhbmQgUmVwbGFjZW1lbnQnLA0KICAgICAgICAnZGVzY3JpcHRpb24nID0+ICdMaWNlbnNlZCBzZXdlciBsaW5lIHJlcGFpciBhbmQgcmVwbGFjZW1lbnQgaW4gS2Fuc2FzIENpdHkgYW5kIE92ZXJsYW5kIFBhcmsuIFNhbWUtZGF5IHNlcnZpY2UsIDUtZ2VuZXJhdGlvbiBwbHVtYmluZyBmYW1pbHksIHRyYW5zcGFyZW50IGZsYXQtcmF0ZSBwcmljaW5nLicNCiAgICApLA0KICAgICdzZXdlci1jbGVhbmluZycgPT4gYXJyYXkoDQogICAgICAgICdwaWQnID0+IDI4NywNCiAgICAgICAgJ3NlcnZpY2VfbmFtZScgPT4gJ1Nld2VyIENsZWFuaW5nIGFuZCBDbGVhbm91dCcsDQogICAgICAgICdkZXNjcmlwdGlvbicgPT4gJ1Byb2Zlc3Npb25hbCBzZXdlciBjbGVhbmluZyBhbmQgY2xlYW5vdXQgc2VydmljZXMgaW4gS2Fuc2FzIENpdHkuIEh5ZHJvLWpldHRpbmcsIG1lY2hhbmljYWwgY2xlYW5pbmcsIGNhbWVyYSBpbnNwZWN0aW9uLiBMaWNlbnNlZCBhbmQgaW5zdXJlZC4nDQogICAgKSwNCiAgICAnZHJhaW4tY2xlYW5pbmcnID0+IGFycmF5KA0KICAgICAgICAncGlkJyA9PiAyODgsDQogICAgICAgICdzZXJ2aWNlX25hbWUnID0+ICdEcmFpbiBDbGVhbmluZycsDQogICAgICAgICdkZXNjcmlwdGlvbicgPT4gJ0RyYWluIGNsZWFuaW5nIHNwZWNpYWxpc3RzIGluIEthbnNhcyBDaXR5LiBLaXRjaGVuLCBiYXRocm9vbSwgbWFpbiBsaW5lLiBTYW1lLWRheSBzZXJ2aWNlLCB0cmFuc3BhcmVudCBwcmljaW5nLCBubyB1cHNlbGxzLicNCiAgICApLA0KICAgICdzdW1wLXB1bXAtZW1lcmdlbmN5JyA9PiBhcnJheSgNCiAgICAgICAgJ3BpZCcgPT4gMjg5LA0KICAgICAgICAnc2VydmljZV9uYW1lJyA9PiAnU3VtcCBQdW1wIFJlcGFpciBhbmQgSW5zdGFsbGF0aW9uJywNCiAgICAgICAgJ2Rlc2NyaXB0aW9uJyA9PiAnRW1lcmdlbmN5IHN1bXAgcHVtcCByZXBhaXIgYW5kIHJlcGxhY2VtZW50IGluIEthbnNhcyBDaXR5LiBCYXR0ZXJ5IGJhY2t1cCBzeXN0ZW1zLCBiYXNlbWVudCB3YXRlcnByb29maW5nLiBTYW1lLWRheSBmbG9vZGluZyByZXNwb25zZS4nDQogICAgKSwNCiAgICAnbGVhay1yZXBhaXInID0+IGFycmF5KA0KICAgICAgICAncGlkJyA9PiAyOTAsDQogICAgICAgICdzZXJ2aWNlX25hbWUnID0+ICdMZWFrIFJlcGFpcicsDQogICAgICAgICdkZXNjcmlwdGlvbicgPT4gJ1BsdW1iaW5nIGxlYWsgZGV0ZWN0aW9uIGFuZCByZXBhaXIgaW4gS2Fuc2FzIENpdHkuIFNsYWIgbGVha3MsIHBpcGUgbGVha3MsIGZpeHR1cmUgbGVha3MuIFNhbWUtZGF5IHNlcnZpY2UsIGxpY2Vuc2VkIGFuZCBpbnN1cmVkLicNCiAgICApLA0KICAgICd0cmVuY2hsZXNzLXNld2VyLXJlcGFpcicgPT4gYXJyYXkoDQogICAgICAgICdwaWQnID0+IDI5MSwNCiAgICAgICAgJ3NlcnZpY2VfbmFtZScgPT4gJ1RyZW5jaGxlc3MgU2V3ZXIgUmVwYWlyJywNCiAgICAgICAgJ2Rlc2NyaXB0aW9uJyA9PiAnVHJlbmNobGVzcyBzZXdlciByZXBhaXIgaW4gS2Fuc2FzIENpdHkuIFBpcGUgYnVyc3RpbmcsIENJUFAgbGluaW5nLCBuby1kaWcgc29sdXRpb25zLiBTYXZlIHlvdXIgeWFyZCwgZml4IHlvdXIgc2V3ZXIuJw0KICAgICksDQogICAgJ3dhdGVyLWhlYXRlci1yZXBhaXInID0+IGFycmF5KA0KICAgICAgICAncGlkJyA9PiAyOTIsDQogICAgICAgICdzZXJ2aWNlX25hbWUnID0+ICdXYXRlciBIZWF0ZXIgUmVwYWlyIGFuZCBJbnN0YWxsYXRpb24nLA0KICAgICAgICAnZGVzY3JpcHRpb24nID0+ICdXYXRlciBoZWF0ZXIgcmVwYWlyLCByZXBsYWNlbWVudCwgYW5kIGluc3RhbGxhdGlvbiBpbiBLYW5zYXMgQ2l0eS4gVGFuaywgdGFua2xlc3MsIGh5YnJpZC4gU2FtZS1kYXkgc2VydmljZSwgbGljZW5zZWQgYW5kIGluc3VyZWQuJw0KICAgICksDQogICAgJ3Nld2VyLWNhbWVyYS1pbnNwZWN0aW9uJyA9PiBhcnJheSgNCiAgICAgICAgJ3BpZCcgPT4gOCwNCiAgICAgICAgJ3NlcnZpY2VfbmFtZScgPT4gJ1Nld2VyIENhbWVyYSBJbnNwZWN0aW9uJywNCiAgICAgICAgJ2Rlc2NyaXB0aW9uJyA9PiAnUHJvZmVzc2lvbmFsIHNld2VyIGNhbWVyYSBpbnNwZWN0aW9uIGluIEthbnNhcyBDaXR5LiBMb2NhdGUgY2xvZ3MsIGJyZWFrcywgcm9vdCBpbnRydXNpb24uIFByZS1wdXJjaGFzZSBob21lIGluc3BlY3Rpb25zIHdlbGNvbWVkLicNCiAgICApLA0KICAgICdlbWVyZ2VuY3ktcGx1bWJpbmcnID0+IGFycmF5KA0KICAgICAgICAncGlkJyA9PiAxMiwNCiAgICAgICAgJ3NlcnZpY2VfbmFtZScgPT4gJ0VtZXJnZW5jeSBQbHVtYmluZycsDQogICAgICAgICdkZXNjcmlwdGlvbicgPT4gJzI0LzcgZW1lcmdlbmN5IHBsdW1iaW5nIGluIEthbnNhcyBDaXR5LiBCdXJzdCBwaXBlcywgYmFja3VwcywgbGVha3MsIG5vIGhvdCB3YXRlci4gTGl2ZSBkaXNwYXRjaGVyLCBzYW1lLWRheSBzZXJ2aWNlLCA1LWdlbmVyYXRpb24gZmFtaWx5LicNCiAgICApLA0KICAgICdnYXMtbGluZS1yZXBhaXItaW5zdGFsbGF0aW9uJyA9PiBhcnJheSgNCiAgICAgICAgJ3BpZCcgPT4gNDY4LA0KICAgICAgICAnc2VydmljZV9uYW1lJyA9PiAnR2FzIExpbmUgUmVwYWlyIGFuZCBJbnN0YWxsYXRpb24nLA0KICAgICAgICAnZGVzY3JpcHRpb24nID0+ICdMaWNlbnNlZCBnYXMgbGluZSByZXBhaXIgYW5kIGluc3RhbGxhdGlvbiBpbiBLYW5zYXMgQ2l0eS4gU2FmZSwgY29kZS1jb21wbGlhbnQsIHNhbWUtZGF5IHNlcnZpY2UuIDUtZ2VuZXJhdGlvbiBwbHVtYmluZyBmYW1pbHkuJw0KICAgICksDQogICAgJ3dhdGVyLXNvZnRlbmVycy1maWx0cmF0aW9uJyA9PiBhcnJheSgNCiAgICAgICAgJ3BpZCcgPT4gNDY5LA0KICAgICAgICAnc2VydmljZV9uYW1lJyA9PiAnV2F0ZXIgU29mdGVuZXJzIGFuZCBGaWx0cmF0aW9uJywNCiAgICAgICAgJ2Rlc2NyaXB0aW9uJyA9PiAnV2F0ZXIgc29mdGVuZXIgYW5kIHdob2xlLWhvbWUgZmlsdHJhdGlvbiBpbnN0YWxsYXRpb24gaW4gS2Fuc2FzIENpdHkuIEhhcmQgd2F0ZXIgc29sdXRpb25zLCBwcm9mZXNzaW9uYWwgc2l6aW5nLCBsaWNlbnNlZCBwbHVtYmVyLicNCiAgICApLA0KKTsNCg0KZnVuY3Rpb24gYnNwX2J1aWxkX3NlcnZpY2Vfc2NoZW1hKCRzbHVnKSB7DQogICAgZ2xvYmFsICRCU1BfU0VSVklDRVM7DQogICAgaWYgKCFpc3NldCgkQlNQX1NFUlZJQ0VTWyRzbHVnXSkpIHJldHVybiBudWxsOw0KICAgICRzID0gJEJTUF9TRVJWSUNFU1skc2x1Z107DQogICAgJHBhZ2VfdXJsID0gJ2h0dHBzOi8vYnJpY2tzLmNhbGxicmlnaHRzaWRlLmNvbS8nIC4gJHNsdWcgLiAnLyc7DQogICAgJHNjaGVtYSA9IGFycmF5KA0KICAgICAgICAnQGNvbnRleHQnID0+ICdodHRwczovL3NjaGVtYS5vcmcnLA0KICAgICAgICAnQGdyYXBoJyA9PiBhcnJheSgNCiAgICAgICAgICAgIGFycmF5KA0KICAgICAgICAgICAgICAgICdAdHlwZScgPT4gYXJyYXkoJ0xvY2FsQnVzaW5lc3MnLCAnUGx1bWJlcicpLA0KICAgICAgICAgICAgICAgICdAaWQnID0+ICRwYWdlX3VybCAuICcjYnVzaW5lc3MnLA0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAnQnJpZ2h0IFNpZGUgUGx1bWJpbmcnLA0KICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbicgPT4gJ0xpY2Vuc2VkIGluc3VyZWQgcGx1bWJlciBzZXJ2aW5nIEthbnNhcyBDaXR5IGFuZCBPdmVybGFuZCBQYXJrIHNpbmNlIHRoZSAxOTIwcy4nLA0KICAgICAgICAgICAgICAgICd1cmwnID0+ICRwYWdlX3VybCwNCiAgICAgICAgICAgICAgICAndGVsZXBob25lJyA9PiAnKzEtOTEzLTk2My0xMDI5JywNCiAgICAgICAgICAgICAgICAncHJpY2VSYW5nZScgPT4gJyQkJywNCiAgICAgICAgICAgICAgICAnYWRkcmVzcycgPT4gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICdAdHlwZScgPT4gJ1Bvc3RhbEFkZHJlc3MnLA0KICAgICAgICAgICAgICAgICAgICAnc3RyZWV0QWRkcmVzcycgPT4gJzEyMDIyIEJsdWUgVmFsbGV5IFBrd3knLA0KICAgICAgICAgICAgICAgICAgICAnYWRkcmVzc0xvY2FsaXR5JyA9PiAnT3ZlcmxhbmQgUGFyaycsDQogICAgICAgICAgICAgICAgICAgICdhZGRyZXNzUmVnaW9uJyA9PiAnS1MnLA0KICAgICAgICAgICAgICAgICAgICAncG9zdGFsQ29kZScgPT4gJzY2MjEzJywNCiAgICAgICAgICAgICAgICAgICAgJ2FkZHJlc3NDb3VudHJ5JyA9PiAnVVMnDQogICAgICAgICAgICAgICAgKSwNCiAgICAgICAgICAgICAgICAnYWdncmVnYXRlUmF0aW5nJyA9PiBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJyA9PiAnQWdncmVnYXRlUmF0aW5nJywNCiAgICAgICAgICAgICAgICAgICAgJ3JhdGluZ1ZhbHVlJyA9PiAnNC45JywNCiAgICAgICAgICAgICAgICAgICAgJ3Jldmlld0NvdW50JyA9PiAnMzg0Jw0KICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICksDQogICAgICAgICAgICBhcnJheSgNCiAgICAgICAgICAgICAgICAnQHR5cGUnID0+ICdTZXJ2aWNlJywNCiAgICAgICAgICAgICAgICAnQGlkJyA9PiAkcGFnZV91cmwgLiAnI3NlcnZpY2UnLA0KICAgICAgICAgICAgICAgICduYW1lJyA9PiAkc1snc2VydmljZV9uYW1lJ10sDQogICAgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJyA9PiAkc1snZGVzY3JpcHRpb24nXSwNCiAgICAgICAgICAgICAgICAncHJvdmlkZXInID0+IGFycmF5KCdAaWQnID0+ICRwYWdlX3VybCAuICcjYnVzaW5lc3MnKSwNCiAgICAgICAgICAgICAgICAnYXJlYVNlcnZlZCcgPT4gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgIGFycmF5KCdAdHlwZScgPT4gJ0NpdHknLCAnbmFtZScgPT4gJ0thbnNhcyBDaXR5JyksDQogICAgICAgICAgICAgICAgICAgIGFycmF5KCdAdHlwZScgPT4gJ0NpdHknLCAnbmFtZScgPT4gJ092ZXJsYW5kIFBhcmsnKSwNCiAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ0B0eXBlJyA9PiAnQWRtaW5pc3RyYXRpdmVBcmVhJywgJ25hbWUnID0+ICdKb2huc29uIENvdW50eSwgS1MnKQ0KICAgICAgICAgICAgICAgICksDQogICAgICAgICAgICAgICAgJ3NlcnZpY2VUeXBlJyA9PiAnUGx1bWJpbmcnLA0KICAgICAgICAgICAgICAgICd1cmwnID0+ICRwYWdlX3VybA0KICAgICAgICAgICAgKSwNCiAgICAgICAgICAgIGFycmF5KA0KICAgICAgICAgICAgICAgICdAdHlwZScgPT4gJ0JyZWFkY3J1bWJMaXN0JywNCiAgICAgICAgICAgICAgICAnaXRlbUxpc3RFbGVtZW50JyA9PiBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ0B0eXBlJyA9PiAnTGlzdEl0ZW0nLCAncG9zaXRpb24nID0+IDEsICduYW1lJyA9PiAnSG9tZScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICdpdGVtJyA9PiAnaHR0cHM6Ly9icmlja3MuY2FsbGJyaWdodHNpZGUuY29tLycpLA0KICAgICAgICAgICAgICAgICAgICBhcnJheSgnQHR5cGUnID0+ICdMaXN0SXRlbScsICdwb3NpdGlvbicgPT4gMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnID0+ICRzWydzZXJ2aWNlX25hbWUnXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2l0ZW0nID0+ICRwYWdlX3VybCkNCiAgICAgICAgICAgICAgICApDQogICAgICAgICAgICApDQogICAgICAgICkNCiAgICApOw0KICAgIHJldHVybiB3cF9qc29uX2VuY29kZSgkc2NoZW1hLCBKU09OX1VORVNDQVBFRF9TTEFTSEVTKTsNCn0NCg0KYWRkX2FjdGlvbignd3BfaGVhZCcsICdic3Bfc2VydmljZV9zY2hlbWFfaW5qZWN0JywgOTk4KTsNCmZ1bmN0aW9uIGJzcF9zZXJ2aWNlX3NjaGVtYV9pbmplY3QoKSB7DQogICAgaWYgKGlzX2FkbWluKCkgfHwgd3BfZG9pbmdfYWpheCgpIHx8IChkZWZpbmVkKCdSRVNUX1JFUVVFU1QnKSAmJiBSRVNUX1JFUVVFU1QpKSByZXR1cm47DQogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYnJpY2tzX2lzX2J1aWxkZXJfbWFpbicpICYmIGJyaWNrc19pc19idWlsZGVyX21haW4oKSkgcmV0dXJuOw0KICAgICRzdmNfcGlkcyA9IGFycmF5KDI4NiwgMjg3LCAyODgsIDI4OSwgMjkwLCAyOTEsIDI5MiwgOCwgMTIsIDQ2OCwgNDY5KTsNCiAgICBpZiAoIWlzX3Npbmd1bGFyKCkgfHwgIWluX2FycmF5KGdldF90aGVfSUQoKSwgJHN2Y19waWRzLCB0cnVlKSkgcmV0dXJuOw0KICAgICRzbHVnID0gZ2V0X3Bvc3RfZmllbGQoJ3Bvc3RfbmFtZScsIGdldF90aGVfSUQoKSk7DQogICAgJHNjaGVtYSA9IGJzcF9idWlsZF9zZXJ2aWNlX3NjaGVtYSgkc2x1Zyk7DQogICAgaWYgKCRzY2hlbWEpIHsNCiAgICAgICAgZWNobyAiXG4iIC4gJzwhLS0gQlNQX1BJRUNFX0NfU0NIRU1BIC0tPicgLiAiXG4iOw0KICAgICAgICBlY2hvICc8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2xkK2pzb24iPicgLiAkc2NoZW1hIC4gJzwvc2NyaXB0PicgLiAiXG4iOw0KICAgIH0NCn0NCg0KDQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogKiBQSUVDRSBEIOKAlCBGQVEgYWNjb3JkaW9uIEpTIChCU1BfUElFQ0VfRF9GQVFfSlNfMjAyNjA1MDJfMjAzMDI2KQ0KICogSlMtb25seSBpbmplY3Rvci4gTk8gQ1NTIGluIFBIUCAoUjQ0KS4gQ1NTIGxpdmVzIGluIHN0eWxlLmNzcy4NCiAqIFRhcmdldDogOSBzZXJ2aWNlIFBJRHMgKDI4Ni8yODcvMjg4LzI4OS8yOTAvMjkxLzI5Mi84LzEyKS4NCiAqIERlZmF1bHQgc3RhdGUgT1BFTi4gQ2xpY2sgdG9nZ2xlcyAuYnNwLWZhcS1jb2xsYXBzZWQgY2xhc3MgKENTUyBoYW5kbGVzIGhpZGUpLg0KICogUGVyIFI0MDogY29kZWJhc2U9YnNwX29wMjU4IGxpbmUgMzIwNzsgTUg9YnNwLW1heTAyLXBpZWNlMi1yZXZlcnQgKGRlZmF1bHQtT1BFTiByZXEpDQogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovDQphZGRfYWN0aW9uKCd3cF9oZWFkJywgJ2JzcF9zZXJ2aWNlX2ZhcV9hY2NvcmRpb25fanMnLCAxNTA1KTsNCmZ1bmN0aW9uIGJzcF9zZXJ2aWNlX2ZhcV9hY2NvcmRpb25fanMoKSB7DQogICAgaWYgKGlzX2FkbWluKCkgfHwgd3BfZG9pbmdfYWpheCgpIHx8IChkZWZpbmVkKCdSRVNUX1JFUVVFU1QnKSAmJiBSRVNUX1JFUVVFU1QpKSByZXR1cm47DQogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYnJpY2tzX2lzX2J1aWxkZXJfbWFpbicpICYmIGJyaWNrc19pc19idWlsZGVyX21haW4oKSkgcmV0dXJuOw0KICAgICRzdmNfcGlkcyA9IGFycmF5KDI4NiwgMjg3LCAyODgsIDI4OSwgMjkwLCAyOTEsIDI5MiwgOCwgMTIpOw0KICAgIGlmICghaXNfcGFnZSgkc3ZjX3BpZHMpKSByZXR1cm47DQogICAgZWNobyAiXG4iIC4gJzwhLS0gQlNQX1BJRUNFX0RfRkFRX0pTIC0tPicgLiAiXG4iOw0KICAgID8+DQo8c2NyaXB0IGlkPSJic3AtcGllY2UtZC1mYXEtanMiPg0KKGZ1bmN0aW9uKCkgew0KICBmdW5jdGlvbiBpbml0KCkgew0KICAgIHZhciBzZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JyeGUtNjAxZWMwJyk7DQogICAgaWYgKCFzZWN0aW9uKSByZXR1cm47DQogICAgdmFyIGJsb2NrcyA9IHNlY3Rpb24ucXVlcnlTZWxlY3RvckFsbCgnLmJyeGUtYmxvY2snKTsNCiAgICBibG9ja3MuZm9yRWFjaChmdW5jdGlvbihibG9jaykgew0KICAgICAgaWYgKGJsb2NrLmRhdGFzZXQuYnNwRmFxSW5pdCkgcmV0dXJuOw0KICAgICAgdmFyIGggPSBibG9jay5xdWVyeVNlbGVjdG9yKCdoMy5icnhlLWhlYWRpbmcsIGg0LmJyeGUtaGVhZGluZycpOw0KICAgICAgdmFyIHAgPSBibG9jay5xdWVyeVNlbGVjdG9yKCc6c2NvcGUgPiBwLmJyeGUtdGV4dC1iYXNpYycpOw0KICAgICAgaWYgKCFoIHx8ICFwKSByZXR1cm47DQogICAgICBibG9jay5kYXRhc2V0LmJzcEZhcUluaXQgPSAnMSc7DQogICAgICBoLnF1ZXJ5U2VsZWN0b3JBbGwoJy5ic3Atc3ZjLWZhcS10b2dnbGUnKS5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsgdC5yZW1vdmUoKTsgfSk7DQogICAgICBoLnNldEF0dHJpYnV0ZSgncm9sZScsICdidXR0b24nKTsNCiAgICAgIGguc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7DQogICAgICBoLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7DQogICAgICB2YXIgdG9nZ2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOw0KICAgICAgdG9nZ2xlLmNsYXNzTmFtZSA9ICdic3Atc3ZjLWZhcS10b2dnbGUnOw0KICAgICAgdG9nZ2xlLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpOw0KICAgICAgdG9nZ2xlLnRleHRDb250ZW50ID0gJ+KIkic7DQogICAgICBoLmFwcGVuZENoaWxkKHRvZ2dsZSk7DQogICAgICBmdW5jdGlvbiBmbGlwKCkgew0KICAgICAgICB2YXIgaXNDb2xsYXBzZWQgPSBibG9jay5jbGFzc0xpc3QudG9nZ2xlKCdic3AtZmFxLWNvbGxhcHNlZCcpOw0KICAgICAgICB0b2dnbGUudGV4dENvbnRlbnQgPSBpc0NvbGxhcHNlZCA/ICcrJyA6ICfiiJInOw0KICAgICAgICBoLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIGlzQ29sbGFwc2VkID8gJ2ZhbHNlJyA6ICd0cnVlJyk7DQogICAgICB9DQogICAgICBoLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZmxpcCk7DQogICAgICBoLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKSB7DQogICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJyAnKSB7IGUucHJldmVudERlZmF1bHQoKTsgZmxpcCgpOyB9DQogICAgICB9KTsNCiAgICB9KTsNCiAgfQ0KICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgaW5pdCk7DQogIGVsc2UgaW5pdCgpOw0KICBzZXRUaW1lb3V0KGluaXQsIDUwMCk7DQp9KSgpOw0KPC9zY3JpcHQ+DQogICAgPD9waHANCn0NCg0KDQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogKiBTRVJWSUNFUyBJTkRFWCBTQ0hFTUEgKEJTUF9TVkNfSU5ERVhfU0NIRU1BXzIwMjYwNTAyXzIxMjExOCkNCiAqIEluamVjdHMgQ29sbGVjdGlvblBhZ2UgKyBJdGVtTGlzdCBKU09OLUxEIGZvciAvc2VydmljZXMvIChQSUQgNjAwKS4NCiAqIFBlciBSNDQ6IFBIUC1vbmx5LiBNaXJyb3JzIFBpZWNlIEMgYnNwX3NlcnZpY2Vfc2NoZW1hX2luamVjdCBwYXR0ZXJuLg0KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0KYWRkX2FjdGlvbignd3BfaGVhZCcsICdic3Bfc2VydmljZXNfaW5kZXhfc2NoZW1hX2luamVjdCcsIDk5OCk7DQpmdW5jdGlvbiBic3Bfc2VydmljZXNfaW5kZXhfc2NoZW1hX2luamVjdCgpIHsNCiAgICBpZiAoaXNfYWRtaW4oKSB8fCB3cF9kb2luZ19hamF4KCkgfHwgKGRlZmluZWQoJ1JFU1RfUkVRVUVTVCcpICYmIFJFU1RfUkVRVUVTVCkpIHJldHVybjsNCiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdicmlja3NfaXNfYnVpbGRlcl9tYWluJykgJiYgYnJpY2tzX2lzX2J1aWxkZXJfbWFpbigpKSByZXR1cm47DQogICAgaWYgKCFpc19zaW5ndWxhcigpIHx8IGdldF90aGVfSUQoKSAhPT0gNjAwKSByZXR1cm47DQogICAgJHBhZ2VfdXJsID0gJ2h0dHBzOi8vYnJpY2tzLmNhbGxicmlnaHRzaWRlLmNvbS9zZXJ2aWNlcy8nOw0KICAgICRzZXJ2aWNlc19saXN0ID0gYXJyYXkoDQogICAgICAgIGFycmF5KCduYW1lJyA9PiAnU2V3ZXIgQ2FtZXJhIEluc3BlY3Rpb24nLCAgICAgICAndXJsJyA9PiAnaHR0cHM6Ly9icmlja3MuY2FsbGJyaWdodHNpZGUuY29tL3Nld2VyLWNhbWVyYS1pbnNwZWN0aW9uLycpLA0KICAgICAgICBhcnJheSgnbmFtZScgPT4gJ0VtZXJnZW5jeSBQbHVtYmluZycsICAgICAgICAgICAgJ3VybCcgPT4gJ2h0dHBzOi8vYnJpY2tzLmNhbGxicmlnaHRzaWRlLmNvbS9lbWVyZ2VuY3ktcGx1bWJpbmcvJyksDQogICAgICAgIGFycmF5KCduYW1lJyA9PiAnU2V3ZXIgTGluZSBSZXBhaXInLCAgICAgICAgICAgICAndXJsJyA9PiAnaHR0cHM6Ly9icmlja3MuY2FsbGJyaWdodHNpZGUuY29tL3Nld2VyLXJlcGFpci8nKSwNCiAgICAgICAgYXJyYXkoJ25hbWUnID0+ICdUcmVuY2hsZXNzIFNld2VyIFJlcGFpcicsICAgICAgICd1cmwnID0+ICdodHRwczovL2JyaWNrcy5jYWxsYnJpZ2h0c2lkZS5jb20vdHJlbmNobGVzcy1zZXdlci1yZXBhaXIvJyksDQogICAgICAgIGFycmF5KCduYW1lJyA9PiAnU2V3ZXIgQ2xlYW5pbmcnLCAgICAgICAgICAgICAgICAndXJsJyA9PiAnaHR0cHM6Ly9icmlja3MuY2FsbGJyaWdodHNpZGUuY29tL3Nld2VyLWNsZWFuaW5nLycpLA0KICAgICAgICBhcnJheSgnbmFtZScgPT4gJ0RyYWluIENsZWFuaW5nJywgICAgICAgICAgICAgICAgJ3VybCcgPT4gJ2h0dHBzOi8vYnJpY2tzLmNhbGxicmlnaHRzaWRlLmNvbS9kcmFpbi1jbGVhbmluZy8nKSwNCiAgICAgICAgYXJyYXkoJ25hbWUnID0+ICdXYXRlciBIZWF0ZXIgUmVwYWlyJywgICAgICAgICAgICd1cmwnID0+ICdodHRwczovL2JyaWNrcy5jYWxsYnJpZ2h0c2lkZS5jb20vd2F0ZXItaGVhdGVyLXJlcGFpci8nKSwNCiAgICAgICAgYXJyYXkoJ25hbWUnID0+ICdTdW1wIFB1bXAgUmVwYWlyJywgICAgICAgICAgICAgICd1cmwnID0+ICdodHRwczovL2JyaWNrcy5jYWxsYnJpZ2h0c2lkZS5jb20vc3VtcC1wdW1wLWVtZXJnZW5jeS8nKSwNCiAgICAgICAgYXJyYXkoJ25hbWUnID0+ICdMZWFrIFJlcGFpcicsICAgICAgICAgICAgICAgICAgICd1cmwnID0+ICdodHRwczovL2JyaWNrcy5jYWxsYnJpZ2h0c2lkZS5jb20vbGVhay1yZXBhaXIvJyksDQogICAgKTsNCiAgICAkaXRlbXMgPSBhcnJheSgpOw0KICAgIGZvcmVhY2ggKCRzZXJ2aWNlc19saXN0IGFzICRpID0+ICRzdmMpIHsNCiAgICAgICAgJGl0ZW1zW10gPSBhcnJheSgNCiAgICAgICAgICAgICdAdHlwZScgPT4gJ0xpc3RJdGVtJywNCiAgICAgICAgICAgICdwb3NpdGlvbicgPT4gJGkgKyAxLA0KICAgICAgICAgICAgJ25hbWUnID0+ICRzdmNbJ25hbWUnXSwNCiAgICAgICAgICAgICd1cmwnID0+ICRzdmNbJ3VybCddLA0KICAgICAgICApOw0KICAgIH0NCiAgICAkc2NoZW1hID0gYXJyYXkoDQogICAgICAgICdAY29udGV4dCcgPT4gJ2h0dHBzOi8vc2NoZW1hLm9yZycsDQogICAgICAgICdAZ3JhcGgnID0+IGFycmF5KA0KICAgICAgICAgICAgYXJyYXkoDQogICAgICAgICAgICAgICAgJ0B0eXBlJyA9PiBhcnJheSgnTG9jYWxCdXNpbmVzcycsICdQbHVtYmVyJyksDQogICAgICAgICAgICAgICAgJ0BpZCcgPT4gJHBhZ2VfdXJsIC4gJyNidXNpbmVzcycsDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdCcmlnaHQgU2lkZSBQbHVtYmluZycsDQogICAgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJyA9PiAnTGljZW5zZWQgaW5zdXJlZCBwbHVtYmVyIHNlcnZpbmcgS2Fuc2FzIENpdHkgYW5kIE92ZXJsYW5kIFBhcmsgc2luY2UgdGhlIDE5MjBzLicsDQogICAgICAgICAgICAgICAgJ3VybCcgPT4gJHBhZ2VfdXJsLA0KICAgICAgICAgICAgICAgICd0ZWxlcGhvbmUnID0+ICcrMS05MTMtOTYzLTEwMjknLA0KICAgICAgICAgICAgICAgICdwcmljZVJhbmdlJyA9PiAnJCQnLA0KICAgICAgICAgICAgICAgICdhZGRyZXNzJyA9PiBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJyA9PiAnUG9zdGFsQWRkcmVzcycsDQogICAgICAgICAgICAgICAgICAgICdzdHJlZXRBZGRyZXNzJyA9PiAnMTIwMjIgQmx1ZSBWYWxsZXkgUGt3eScsDQogICAgICAgICAgICAgICAgICAgICdhZGRyZXNzTG9jYWxpdHknID0+ICdPdmVybGFuZCBQYXJrJywNCiAgICAgICAgICAgICAgICAgICAgJ2FkZHJlc3NSZWdpb24nID0+ICdLUycsDQogICAgICAgICAgICAgICAgICAgICdwb3N0YWxDb2RlJyA9PiAnNjYyMTMnLA0KICAgICAgICAgICAgICAgICAgICAnYWRkcmVzc0NvdW50cnknID0+ICdVUycNCiAgICAgICAgICAgICAgICApLA0KICAgICAgICAgICAgICAgICdhZ2dyZWdhdGVSYXRpbmcnID0+IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAnQHR5cGUnID0+ICdBZ2dyZWdhdGVSYXRpbmcnLA0KICAgICAgICAgICAgICAgICAgICAncmF0aW5nVmFsdWUnID0+ICc0LjknLA0KICAgICAgICAgICAgICAgICAgICAncmV2aWV3Q291bnQnID0+ICczODQnDQogICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgKSwNCiAgICAgICAgICAgIGFycmF5KA0KICAgICAgICAgICAgICAgICdAdHlwZScgPT4gJ0NvbGxlY3Rpb25QYWdlJywNCiAgICAgICAgICAgICAgICAnQGlkJyA9PiAkcGFnZV91cmwsDQogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdCcmlnaHQgU2lkZSBQbHVtYmluZyBTZXJ2aWNlcyBpbiBLYW5zYXMgQ2l0eScsDQogICAgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJyA9PiAnU2V3ZXIsIGRyYWluLCB3YXRlciBoZWF0ZXIsIGFuZCBsZWFrIHJlcGFpciBzZXJ2aWNlcyBhY3Jvc3MgS2Fuc2FzIENpdHkgYW5kIE92ZXJsYW5kIFBhcmsuIEZsYXQtcmF0ZSBwcmljaW5nLCA1LWdlbmVyYXRpb24gcGx1bWJpbmcgZmFtaWx5LCBzYW1lLWRheSBzZXJ2aWNlLicsDQogICAgICAgICAgICAgICAgJ3VybCcgPT4gJHBhZ2VfdXJsLA0KICAgICAgICAgICAgICAgICdtYWluRW50aXR5JyA9PiBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgJ0B0eXBlJyA9PiAnSXRlbUxpc3QnLA0KICAgICAgICAgICAgICAgICAgICAnbnVtYmVyT2ZJdGVtcycgPT4gY291bnQoJHNlcnZpY2VzX2xpc3QpLA0KICAgICAgICAgICAgICAgICAgICAnaXRlbUxpc3RFbGVtZW50JyA9PiAkaXRlbXMNCiAgICAgICAgICAgICAgICApDQogICAgICAgICAgICApLA0KICAgICAgICAgICAgYXJyYXkoDQogICAgICAgICAgICAgICAgJ0B0eXBlJyA9PiAnQnJlYWRjcnVtYkxpc3QnLA0KICAgICAgICAgICAgICAgICdpdGVtTGlzdEVsZW1lbnQnID0+IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICBhcnJheSgnQHR5cGUnID0+ICdMaXN0SXRlbScsICdwb3NpdGlvbicgPT4gMSwgJ25hbWUnID0+ICdIb21lJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2l0ZW0nID0+ICdodHRwczovL2JyaWNrcy5jYWxsYnJpZ2h0c2lkZS5jb20vJyksDQogICAgICAgICAgICAgICAgICAgIGFycmF5KCdAdHlwZScgPT4gJ0xpc3RJdGVtJywgJ3Bvc2l0aW9uJyA9PiAyLCAnbmFtZScgPT4gJ1NlcnZpY2VzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2l0ZW0nID0+ICRwYWdlX3VybCkNCiAgICAgICAgICAgICAgICApDQogICAgICAgICAgICApDQogICAgICAgICkNCiAgICApOw0KICAgIGVjaG8gIlxuIiAuICc8IS0tIEJTUF9TVkNfSU5ERVhfU0NIRU1BIC0tPicgLiAiXG4iOw0KICAgIGVjaG8gJzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+JyAuIHdwX2pzb25fZW5jb2RlKCRzY2hlbWEsIEpTT05fVU5FU0NBUEVEX1NMQVNIRVMpIC4gJzwvc2NyaXB0PicgLiAiXG4iOw0KfQ0KDQoNCi8vIEJTUF82MTlfQ0FMTF9DVEFfSU5KRUNUXzIwMjZfMDVfMDMNCmFkZF9hY3Rpb24oJ3dwX2Zvb3RlcicsIGZ1bmN0aW9uKCkgew0KICAgID8+DQogICAgPHNjcmlwdD4NCiAgICAoZnVuY3Rpb24oKSB7DQogICAgICAgIGZ1bmN0aW9uIGluamVjdENhbGxDdGEoKSB7DQogICAgICAgICAgICAvLyBGaW5kIGFueSAiSSBhbSBhIGJ1dHRvbiIgcGxhY2Vob2xkZXIgc3BhbiBpbiB0aGUgaGVhZGVyIGFyZWENCiAgICAgICAgICAgIHZhciBwbGFjZWhvbGRlcnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzcGFuLmJyeGUtYnV0dG9uLmJyaWNrcy1idXR0b24uYnJpY2tzLWJhY2tncm91bmQtcHJpbWFyeScpOw0KICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbGFjZWhvbGRlcnMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICB2YXIgc3BhbiA9IHBsYWNlaG9sZGVyc1tpXTsNCiAgICAgICAgICAgICAgICBpZiAoKHNwYW4udGV4dENvbnRlbnQgfHwgJycpLnRyaW0oKSA9PT0gJ0kgYW0gYSBidXR0b24nKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOw0KICAgICAgICAgICAgICAgICAgICBhLmhyZWYgPSAndGVsOisxOTEzOTYzMTAyOSc7DQogICAgICAgICAgICAgICAgICAgIGEuY2xhc3NOYW1lID0gJ2JzcC1jYWxsLWN0YSBicnhlLWJ1dHRvbiBicmlja3MtYnV0dG9uJzsNCiAgICAgICAgICAgICAgICAgICAgYS50ZXh0Q29udGVudCA9ICdDYWxsICg5MTMpIDk2My0xMDI5JzsNCiAgICAgICAgICAgICAgICAgICAgYS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnQ2FsbCBCcmlnaHQgU2lkZSBQbHVtYmluZyBhdCA5MTMtOTYzLTEwMjknKTsNCiAgICAgICAgICAgICAgICAgICAgc3Bhbi5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChhLCBzcGFuKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgew0KICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluamVjdENhbGxDdGEpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgaW5qZWN0Q2FsbEN0YSgpOw0KICAgICAgICB9DQogICAgICAgIC8vIFJlLXJ1biBhZnRlciBCcmlja3MgbGF6eS1sb2FkIHJldmVhbHMNCiAgICAgICAgc2V0VGltZW91dChpbmplY3RDYWxsQ3RhLCA4MDApOw0KICAgIH0pKCk7DQogICAgPC9zY3JpcHQ+DQogICAgPD9waHANCn0sIDk5KTsNCg0KDQovLyBCU1BfTkFWX0hBTUJVUkdFUl9XSVJFVVBfMjAyNl8wNV8wMw0KYWRkX2FjdGlvbignd3BfZm9vdGVyJywgZnVuY3Rpb24oKSB7DQogICAgPz4NCiAgICA8c2NyaXB0Pg0KICAgIChmdW5jdGlvbigpIHsNCiAgICAgICAgZnVuY3Rpb24gd2lyZUhhbWJ1cmdlcigpIHsNCiAgICAgICAgICAgIHZhciB0b2dnbGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkZXIgYnV0dG9uLmJyeGUtdG9nZ2xlJyk7DQogICAgICAgICAgICB2YXIgbmF2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JyeGUtdm9xdXZvJyk7DQogICAgICAgICAgICBpZiAoIXRvZ2dsZSB8fCAhbmF2IHx8IHRvZ2dsZS5kYXRhc2V0LmJzcFdpcmVkID09PSAnMScpIHJldHVybjsNCiAgICAgICAgICAgIHRvZ2dsZS5kYXRhc2V0LmJzcFdpcmVkID0gJzEnOw0KICAgICAgICAgICAgdG9nZ2xlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgew0KICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgICAgICAgICAgICB2YXIgaXNPcGVuID0gbmF2LmNsYXNzTGlzdC50b2dnbGUoJ2JyeC1vcGVuJyk7DQogICAgICAgICAgICAgICAgdG9nZ2xlLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIGlzT3BlbiA/ICd0cnVlJyA6ICdmYWxzZScpOw0KICAgICAgICAgICAgICAgIHRvZ2dsZS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCBpc09wZW4gPyAnQ2xvc2UnIDogJ09wZW4nKTsNCiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2JzcC1uYXYtb3BlbicsIGlzT3Blbik7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIC8vIENsaWNrIG91dHNpZGUgdG8gY2xvc2UNCiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgew0KICAgICAgICAgICAgICAgIGlmICghbmF2LmNsYXNzTGlzdC5jb250YWlucygnYnJ4LW9wZW4nKSkgcmV0dXJuOw0KICAgICAgICAgICAgICAgIGlmICh0b2dnbGUuY29udGFpbnMoZS50YXJnZXQpIHx8IG5hdi5jb250YWlucyhlLnRhcmdldCkpIHJldHVybjsNCiAgICAgICAgICAgICAgICBuYXYuY2xhc3NMaXN0LnJlbW92ZSgnYnJ4LW9wZW4nKTsNCiAgICAgICAgICAgICAgICB0b2dnbGUuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7DQogICAgICAgICAgICAgICAgdG9nZ2xlLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdPcGVuJyk7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdic3AtbmF2LW9wZW4nKTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgLy8gQ2xvc2Ugb24gRVNDDQogICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZSkgew0KICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScgJiYgbmF2LmNsYXNzTGlzdC5jb250YWlucygnYnJ4LW9wZW4nKSkgew0KICAgICAgICAgICAgICAgICAgICBuYXYuY2xhc3NMaXN0LnJlbW92ZSgnYnJ4LW9wZW4nKTsNCiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpOw0KICAgICAgICAgICAgICAgICAgICB0b2dnbGUuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ09wZW4nKTsNCiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdic3AtbmF2LW9wZW4nKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSB7DQogICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgd2lyZUhhbWJ1cmdlcik7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB3aXJlSGFtYnVyZ2VyKCk7DQogICAgICAgIH0NCiAgICAgICAgc2V0VGltZW91dCh3aXJlSGFtYnVyZ2VyLCA4MDApOyAgLy8gcmUtcnVuIGFmdGVyIEJyaWNrcyBsYXp5IHJldmVhbA0KICAgIH0pKCk7DQogICAgPC9zY3JpcHQ+DQogICAgPD9waHANCn0sIDEwMCk7DQoNCg0KLy8gQlNQX1BJRDI4N19NSURfU1dBUF8yMDI2XzA1XzAzDQphZGRfYWN0aW9uKCd3cF9mb290ZXInLCBmdW5jdGlvbigpIHsNCiAgICBpZiAoIWlzX3Npbmd1bGFyKCkgfHwgZ2V0X3RoZV9JRCgpICE9PSAyODcpIHJldHVybjsNCiAgICA/Pg0KICAgIDxzY3JpcHQ+DQogICAgKGZ1bmN0aW9uKCkgew0KICAgICAgICBmdW5jdGlvbiBzd2FwKCkgew0KICAgICAgICAgICAgdmFyIGltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdicnhlLWNjNzI3NScpOw0KICAgICAgICAgICAgaWYgKCFpbWcpIHJldHVybjsNCiAgICAgICAgICAgIHZhciBjYW5vbmljYWwgPSAnaHR0cHM6Ly9icmlja3MuY2FsbGJyaWdodHNpZGUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA1L2F1ZHJleS1taWQtc2V3ZXItY2xlYW5pbmctc2NhbGVkLnBuZyc7DQogICAgICAgICAgICBpZiAoaW1nLnNyYyAmJiBpbWcuc3JjLmluZGV4T2YoJ2F1ZHJleS1taWQtc2V3ZXItY2xlYW5pbmcnKSAhPT0gLTEpIHJldHVybjsgIC8vIGFscmVhZHkgY29ycmVjdA0KICAgICAgICAgICAgaW1nLnNyYyA9IGNhbm9uaWNhbDsNCiAgICAgICAgICAgIGlmIChpbWcuZGF0YXNldC5zcmMpIGltZy5kYXRhc2V0LnNyYyA9IGNhbm9uaWNhbDsNCiAgICAgICAgICAgIGltZy5yZW1vdmVBdHRyaWJ1dGUoJ3NyY3NldCcpOw0KICAgICAgICAgICAgaWYgKGltZy5jbGFzc0xpc3QpIGltZy5jbGFzc0xpc3QucmVtb3ZlKCdicmlja3MtbGF6eS1oaWRkZW4nKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgc3dhcCk7DQogICAgICAgIGVsc2Ugc3dhcCgpOw0KICAgICAgICBzZXRUaW1lb3V0KHN3YXAsIDgwMCk7DQogICAgfSkoKTsNCiAgICA8L3NjcmlwdD4NCiAgICA8P3BocA0KfSwgMTAwKTsNCg0KDQovLyBCU1BfRklHTUFfSEVST19TV0FQU18yMDI2XzA1XzAzDQphZGRfYWN0aW9uKCd3cF9mb290ZXInLCBmdW5jdGlvbigpIHsNCiAgICBpZiAoIWlzX3Npbmd1bGFyKCkpIHJldHVybjsNCiAgICAkcGlkID0gZ2V0X3RoZV9JRCgpOw0KICAgIGlmICghaW5fYXJyYXkoJHBpZCwgWzgsIDEyXSkpIHJldHVybjsNCiAgICA/Pg0KICAgIDxzY3JpcHQ+DQogICAgKGZ1bmN0aW9uKCkgew0KICAgICAgICB2YXIgcGlkID0gPD9waHAgZWNobyAoaW50KSRwaWQ7ID8+Ow0KICAgICAgICBmdW5jdGlvbiBzd2FwKGlkLCB1cmwpIHsNCiAgICAgICAgICAgIHZhciBpbWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7DQogICAgICAgICAgICBpZiAoIWltZyB8fCAhdXJsKSByZXR1cm47DQogICAgICAgICAgICBpZiAoaW1nLnNyYyA9PT0gdXJsKSByZXR1cm47DQogICAgICAgICAgICBpbWcuc3JjID0gdXJsOw0KICAgICAgICAgICAgaWYgKGltZy5kYXRhc2V0LnNyYykgaW1nLmRhdGFzZXQuc3JjID0gdXJsOw0KICAgICAgICAgICAgaW1nLnJlbW92ZUF0dHJpYnV0ZSgnc3Jjc2V0Jyk7DQogICAgICAgICAgICBpZiAoaW1nLmNsYXNzTGlzdCkgaW1nLmNsYXNzTGlzdC5yZW1vdmUoJ2JyaWNrcy1sYXp5LWhpZGRlbicpOw0KICAgICAgICB9DQogICAgICAgIGZ1bmN0aW9uIHJ1bigpIHsNCiAgICAgICAgICAgIGlmIChwaWQgPT09IDgpIHsNCiAgICAgICAgICAgICAgICBzd2FwKCdicnhlLTAzMzk3NCcsICdodHRwczovL2JyaWNrcy5jYWxsYnJpZ2h0c2lkZS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDUvYXVkcmV5LWhlcm8tc2V3ZXItY2FtZXJhLWNhbm9uaWNhbC0yMDI2MDUwMl8xOTUwMjcucG5nJyk7DQogICAgICAgICAgICB9IGVsc2UgaWYgKHBpZCA9PT0gMTIpIHsNCiAgICAgICAgICAgICAgICAvLyBQcm9jZXNzIGljb25zIG1hcHBpbmcgKHRoZXNlIHRhcmdldCBzcGVjaWZpYyBicnhlLUlEcyBpbiBQSUQgMTIgcHJvY2VzcyBzdGVwIHNlY3Rpb24pDQogICAgICAgICAgICAgICAgLy8gQmFzZWQgb24gRmlnbWE6IDQgc3RlcCBpY29ucyBleGlzdCDigJQgY2FsbC1hbnN3ZXJlZCwgdGVjaC1kaXNwYXRjaGVkLCBvbi1zaXRlLCBvbi1vdXItd2F5DQogICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IFBJRCAxMiBwcm9jZXNzIHN0ZXBzIHVzZSBleGlzdGluZyBpY29uczsgdGhlIG1pc3Npbmcgb25lcyBhcmUgcGxhY2Vob2xkZXIvU1ZHDQogICAgICAgICAgICAgICAgLy8gSW5qZWN0IG9ubHkgd2hlbiBjdXJyZW50IHNyYyBpcyBkYXRhOmltYWdlIChwbGFjZWhvbGRlcikgYW5kIHRoZSBlbGVtZW50IGJlbG9uZ3MgdG8gc3RlcCByb3cNCiAgICAgICAgICAgICAgICAvLyBXaXRob3V0IGV4YWN0IGJyeGUtSURzIGZyb20gUElEIDEyIHByb2Nlc3Mgcm93LCB3ZSBza2lwIGF1dG8tc3dhcCBmb3Igbm93DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIHJ1bik7DQogICAgICAgIGVsc2UgcnVuKCk7DQogICAgICAgIHNldFRpbWVvdXQocnVuLCA4MDApOw0KICAgIH0pKCk7DQogICAgPC9zY3JpcHQ+DQogICAgPD9waHANCn0sIDEwMCk7DQoNCg0KLy8gQlNQX1BJRDQ2OF9IRVJPX0dBU0xJTkVfU1dBUF8yMDI2XzA1XzAzDQphZGRfYWN0aW9uKCd3cF9mb290ZXInLCBmdW5jdGlvbigpIHsNCiAgICBpZiAoIWlzX3Npbmd1bGFyKCkgfHwgZ2V0X3RoZV9JRCgpICE9PSA0NjgpIHJldHVybjsNCiAgICA/Pg0KICAgIDxzY3JpcHQ+DQogICAgKGZ1bmN0aW9uKCkgew0KICAgICAgICBmdW5jdGlvbiBzd2FwKCkgew0KICAgICAgICAgICAgdmFyIGltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdicnhlLTAzMzk3NCcpOw0KICAgICAgICAgICAgaWYgKCFpbWcpIHJldHVybjsNCiAgICAgICAgICAgIHZhciB1cmwgPSAnaHR0cHM6Ly9icmlja3MuY2FsbGJyaWdodHNpZGUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA1L2F1ZHJleS1oZXJvLWdhcy1saW5lLXVwY2xvc2UtdHJ1ZS1jYW5vbmljYWwtc2NhbGVkLnBuZyc7DQogICAgICAgICAgICBpZiAoaW1nLnNyYyA9PT0gdXJsKSByZXR1cm47DQogICAgICAgICAgICBpbWcuc3JjID0gdXJsOw0KICAgICAgICAgICAgaWYgKGltZy5kYXRhc2V0LnNyYykgaW1nLmRhdGFzZXQuc3JjID0gdXJsOw0KICAgICAgICAgICAgaW1nLnJlbW92ZUF0dHJpYnV0ZSgnc3Jjc2V0Jyk7DQogICAgICAgICAgICBpZiAoaW1nLmNsYXNzTGlzdCkgaW1nLmNsYXNzTGlzdC5yZW1vdmUoJ2JyaWNrcy1sYXp5LWhpZGRlbicpOw0KICAgICAgICB9DQogICAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBzd2FwKTsNCiAgICAgICAgZWxzZSBzd2FwKCk7DQogICAgICAgIHNldFRpbWVvdXQoc3dhcCwgODAwKTsNCiAgICB9KSgpOw0KICAgIDwvc2NyaXB0Pg0KICAgIDw/cGhwDQp9LCAxMDApOw0KDQoNCi8vIEJTUF9QSUQ0NjhfU0FGRVRZX1NURVBTX0pTX0lOSkVDVF8yMDI2XzA1XzAzDQphZGRfYWN0aW9uKCd3cF9mb290ZXInLCBmdW5jdGlvbigpIHsNCiAgICBpZiAoIWlzX3Npbmd1bGFyKCkgfHwgZ2V0X3RoZV9JRCgpICE9PSA0NjgpIHJldHVybjsNCiAgICA/Pg0KICAgIDxzY3JpcHQ+DQogICAgKGZ1bmN0aW9uKCkgew0KICAgICAgICBmdW5jdGlvbiBpbmplY3QoKSB7DQogICAgICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmJzcC1nYXNsaW5lLXNhZmV0eS1zdGVwcycpKSByZXR1cm47DQogICAgICAgICAgICB2YXIgaHRtbCA9ICc8c2VjdGlvbiBjbGFzcz0iYnNwLWdhc2xpbmUtc2FmZXR5LXN0ZXBzIiBhcmlhLWxhYmVsbGVkYnk9ImJzcC1nYXNsaW5lLXNhZmV0eS1oMiI+JyArDQogICAgICAgICAgICAgICAgJzxzdHlsZT4uYnNwLWdhc2xpbmUtc2FmZXR5LXN0ZXBze3BhZGRpbmc6NjBweCAyNHB4O21heC13aWR0aDoxMTQwcHg7bWFyZ2luOjgwcHggYXV0bzt9LmJzcC1nc3MtaW5uZXJ7dGV4dC1hbGlnbjpjZW50ZXI7fS5ic3AtZ3NzLWhlYWRpbmd7Zm9udDo3MDAgMzJweC8xLjIgSW50ZXIsc2Fucy1zZXJpZjtjb2xvcjojMUQxNzYwO21hcmdpbjowIDAgMTJweDt0ZXh0LWFsaWduOmNlbnRlcjt9QG1lZGlhKG1heC13aWR0aDo3NjdweCl7LmJzcC1nc3MtaGVhZGluZ3tmb250LXNpemU6MjRweDt9fS5ic3AtZ3NzLXVuZGVybGluZXt3aWR0aDoxMjBweDtoZWlnaHQ6NHB4O2JhY2tncm91bmQ6IzMwQzVGRjttYXJnaW46MCBhdXRvIDMycHg7Ym9yZGVyLXJhZGl1czoycHg7fS5ic3AtZ3NzLWdyaWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNCwxZnIpO2dhcDoxNnB4O30uYnNwLWdzcy1jYXJke2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6MjRweCAxNnB4O2JhY2tncm91bmQ6I0Y4RkFGQztib3JkZXI6MXB4IHNvbGlkICNENUVBRkY7Ym9yZGVyLXJhZGl1czo4cHg7Ym94LXNoYWRvdzowIDJweCA0cHggcmdiYSgyOSwyMyw5NiwwLjA4KTtnYXA6MTZweDt9LmJzcC1nc3MtaWNvbnt3aWR0aDo5NnB4O2hlaWdodDo5NnB4O29iamVjdC1maXQ6Y29udGFpbjt9LmJzcC1nc3MtbGFiZWx7Zm9udDo2MDAgMTZweC8xLjQgSW50ZXIsc2Fucy1zZXJpZjtjb2xvcjojMUQxNzYwO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO31AbWVkaWEobWF4LXdpZHRoOjk5MXB4KXsuYnNwLWdzcy1ncmlke2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMiwxZnIpO319QG1lZGlhKG1heC13aWR0aDo3NjdweCl7LmJzcC1nc3MtZ3JpZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO30uYnNwLWdzcy1jYXJke2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7dGV4dC1hbGlnbjpsZWZ0O3BhZGRpbmc6MTZweDtnYXA6MTZweDt9LmJzcC1nc3MtaWNvbnt3aWR0aDo3MnB4O2hlaWdodDo3MnB4O2ZsZXgtc2hyaW5rOjA7fS5ic3AtZ3NzLWxhYmVse3RleHQtYWxpZ246bGVmdDt9fTwvc3R5bGU+JyArDQogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJzcC1nc3MtaW5uZXIiPicgKw0KICAgICAgICAgICAgICAgICAgJzxoMiBpZD0iYnNwLWdhc2xpbmUtc2FmZXR5LWgyIiBjbGFzcz0iYnNwLWdzcy1oZWFkaW5nIj5JZiBZb3UgU21lbGwgR2FzICZyYXJyOyBEbyBUaGlzIFJpZ2h0IE5vdzwvaDI+JyArDQogICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iYnNwLWdzcy11bmRlcmxpbmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2Rpdj4nICsNCiAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJic3AtZ3NzLWdyaWQiPicgKw0KICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iYnNwLWdzcy1jYXJkIj48aW1nIHNyYz0iaHR0cHM6Ly9icmlja3MuY2FsbGJyaWdodHNpZGUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA1L2F1ZHJleS1pY29uLWdhc2xpbmUtZmxpcC1zd2l0Y2hlcy5wbmciIGFsdD0iRG8gbm90IGZsaXAgc3dpdGNoZXMiIGNsYXNzPSJic3AtZ3NzLWljb24iPjxwIGNsYXNzPSJic3AtZ3NzLWxhYmVsIj5EbyBub3QgZmxpcCBzd2l0Y2hlcy48L3A+PC9kaXY+JyArDQogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJic3AtZ3NzLWNhcmQiPjxpbWcgc3JjPSJodHRwczovL2JyaWNrcy5jYWxsYnJpZ2h0c2lkZS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDUvYXVkcmV5LWljb24tZ2FzbGluZS1saWdodC1tYXRjaGVzLnBuZyIgYWx0PSJEbyBub3QgbGlnaHQgbWF0Y2hlcyIgY2xhc3M9ImJzcC1nc3MtaWNvbiI+PHAgY2xhc3M9ImJzcC1nc3MtbGFiZWwiPkRvIG5vdCBsaWdodCBtYXRjaGVzLjwvcD48L2Rpdj4nICsNCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJzcC1nc3MtY2FyZCI+PGltZyBzcmM9Imh0dHBzOi8vYnJpY2tzLmNhbGxicmlnaHRzaWRlLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNS9hdWRyZXktaWNvbi1nYXNsaW5lLWxlYXZlLWhvdXNlLnBuZyIgYWx0PSJMZWF2ZSBob3VzZSIgY2xhc3M9ImJzcC1nc3MtaWNvbiI+PHAgY2xhc3M9ImJzcC1nc3MtbGFiZWwiPkxlYXZlIGhvdXNlLjwvcD48L2Rpdj4nICsNCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJzcC1nc3MtY2FyZCI+PGltZyBzcmM9Imh0dHBzOi8vYnJpY2tzLmNhbGxicmlnaHRzaWRlLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNS9hdWRyZXktaWNvbi1nYXNsaW5lLWNhbGwtZnJvbS1vdXRzaWRlLnBuZyIgYWx0PSJDYWxsIGZyb20gb3V0c2lkZSIgY2xhc3M9ImJzcC1nc3MtaWNvbiI+PHAgY2xhc3M9ImJzcC1nc3MtbGFiZWwiPkNhbGwgZnJvbSBvdXRzaWRlLjwvcD48L2Rpdj4nICsNCiAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsNCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArDQogICAgICAgICAgICAgICc8L3NlY3Rpb24+JzsNCiAgICAgICAgICAgIC8vIEZpbmQgYSBwbGFjZSB0byBpbnNlcnQg4oCUIGFmdGVyIHRydXN0IGJhZGdlcywgT1IgYWZ0ZXIgdGhlIGZpcnN0IDMgc2VjdGlvbnMgaW4gbWFpbg0KICAgICAgICAgICAgdmFyIGFuY2hvciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNicnhlLWI5MjRlNiwgI2JyeGUtYjUyNTVjLCBtYWluI2JyeC1jb250ZW50ID4gc2VjdGlvbjpudGgtb2YtdHlwZSgzKScpOw0KICAgICAgICAgICAgaWYgKCFhbmNob3IpIHsNCiAgICAgICAgICAgICAgICAvLyBMYXN0IHJlc29ydDogYXBwZW5kIHRvIG1haW4gY29udGVudA0KICAgICAgICAgICAgICAgIHZhciBtYWluID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWFpbiNicngtY29udGVudCcpOw0KICAgICAgICAgICAgICAgIGlmIChtYWluKSB7DQogICAgICAgICAgICAgICAgICAgIG1haW4uaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCBodG1sKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGFuY2hvci5pbnNlcnRBZGphY2VudEhUTUwoJ2FmdGVyZW5kJywgaHRtbCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluamVjdCk7DQogICAgICAgIGVsc2UgaW5qZWN0KCk7DQogICAgICAgIHNldFRpbWVvdXQoaW5qZWN0LCA4MDApOw0KICAgIH0pKCk7DQogICAgPC9zY3JpcHQ+DQogICAgPD9waHANCn0sIDEwMCk7DQoNCg0KDQoNCg0KDQoNCg0KLy8gPT09IEJTUCB2MyB0aGVtZSBmaWxlIGVuZHBvaW50cyAoc3RhcnQpID09PSBTdGVwIEIgMjAyNi0wNS0wNCA9PT0NCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLy8gQlNQIHYzIHRoZW1lIGZpbGUgZW5kcG9pbnRzIOKAlCBhdG9taWMtcmVwbGFjZSB2aWEgV1BfRmlsZXN5c3RlbQ0KLy8gUGVyIMKnNTEuMTAuMSBSRUNPTU1FTkRFRCBjYW5kaWRhdGUgKGIpIEN1c3RvbSBSRVNUIGVuZHBvaW50DQovLyBPcGVyYXRpb246IHJlZ2lzdGVyX3YzX3RoZW1lX2VuZHBvaW50cyAoUm9iZXJ0IEFDSyBnYXRlZCkNCi8vIENpdGF0aW9uczoNCi8vICAgLSBCU1BfQnJpY2tzX0NvZGViYXNlX0RvY3VtZW50YXRpb24uaHRtbCAjZmlnbWEtYXBpLWNvbXByZWhlbnNpdmUtMjAyNi0wNS0wNCDCpzUxLjEwLjENCi8vICAgLSBrbm93bGVkZ2VfZ2Fwcy9pbnN0YWxsX2NoaWxkX2FsdGVybmF0aXZlXzIwMjZfMDVfMDQubWQgKFBlcnBsZXhpdHkgNyBjaXRlcykNCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQphZGRfYWN0aW9uKCdyZXN0X2FwaV9pbml0JywgZnVuY3Rpb24oKSB7DQogICAgJGFsbG93ZWRfcGF0aHMgPSBbJ3N0eWxlLmNzcycsICdmdW5jdGlvbnMucGhwJ107DQoNCiAgICAvLyBHRVQgL3dwLWpzb24vYnNwL3YzL3RoZW1lL2ZpbGUtcmVhZD9yZWxwYXRoPXN0eWxlLmNzcw0KICAgIHJlZ2lzdGVyX3Jlc3Rfcm91dGUoJ2JzcC92MycsICcvdGhlbWUvZmlsZS1yZWFkJywgWw0KICAgICAgICAnbWV0aG9kcycgID0+ICdHRVQnLA0KICAgICAgICAnY2FsbGJhY2snID0+IGZ1bmN0aW9uKFdQX1JFU1RfUmVxdWVzdCAkcmVxKSB1c2UgKCRhbGxvd2VkX3BhdGhzKSB7DQogICAgICAgICAgICAkcmVsID0gc2FuaXRpemVfdGV4dF9maWVsZCgkcmVxLT5nZXRfcGFyYW0oJ3JlbHBhdGgnKSk7DQogICAgICAgICAgICBpZiAoIWluX2FycmF5KCRyZWwsICRhbGxvd2VkX3BhdGhzLCB0cnVlKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV1BfRXJyb3IoJ2Rpc2FsbG93ZWRfcGF0aCcsICdQYXRoIG5vdCB3aGl0ZWxpc3RlZCcsIFsnc3RhdHVzJyA9PiA0MDBdKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRwYXRoID0gdHJhaWxpbmdzbGFzaGl0KGdldF9zdHlsZXNoZWV0X2RpcmVjdG9yeSgpKSAuICRyZWw7DQogICAgICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRwYXRoKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV1BfRXJyb3IoJ25vdF9mb3VuZCcsICdGaWxlIG5vdCBmb3VuZCcsIFsnc3RhdHVzJyA9PiA0MDRdKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJlcXVpcmVfb25jZSBBQlNQQVRIIC4gJ3dwLWFkbWluL2luY2x1ZGVzL2ZpbGUucGhwJzsNCiAgICAgICAgICAgIFdQX0ZpbGVzeXN0ZW0oKTsNCiAgICAgICAgICAgIGdsb2JhbCAkd3BfZmlsZXN5c3RlbTsNCiAgICAgICAgICAgICRjb250ZW50ID0gJHdwX2ZpbGVzeXN0ZW0tPmdldF9jb250ZW50cygkcGF0aCk7DQogICAgICAgICAgICBpZiAoJGNvbnRlbnQgPT09IGZhbHNlKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXUF9FcnJvcigncmVhZF9mYWlsZWQnLCAnRmlsZXN5c3RlbSByZWFkIGZhaWxlZCcsIFsnc3RhdHVzJyA9PiA1MDBdKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBbDQogICAgICAgICAgICAgICAgJ3N1Y2Nlc3MnICA9PiB0cnVlLA0KICAgICAgICAgICAgICAgICdyZWxwYXRoJyAgPT4gJHJlbCwNCiAgICAgICAgICAgICAgICAncGF0aCcgICAgID0+ICRwYXRoLA0KICAgICAgICAgICAgICAgICdieXRlcycgICAgPT4gc3RybGVuKCRjb250ZW50KSwNCiAgICAgICAgICAgICAgICAnc2hhMjU2JyAgID0+IGhhc2goJ3NoYTI1NicsICRjb250ZW50KSwNCiAgICAgICAgICAgICAgICAnbXRpbWUnICAgID0+IEBmaWxlbXRpbWUoJHBhdGgpLA0KICAgICAgICAgICAgICAgICdjb250ZW50JyAgPT4gYmFzZTY0X2VuY29kZSgkY29udGVudCksIC8vIGJhc2U2NCB0byBhdm9pZCBKU09OIGVuY29kaW5nIGlzc3VlcyB3aXRoIGJpbmFyeS9VVEYtOA0KICAgICAgICAgICAgICAgICdlbmNvZGluZycgPT4gJ2Jhc2U2NCcsDQogICAgICAgICAgICBdOw0KICAgICAgICB9LA0KICAgICAgICAncGVybWlzc2lvbl9jYWxsYmFjaycgPT4gZnVuY3Rpb24oKSB7DQogICAgICAgICAgICByZXR1cm4gY3VycmVudF91c2VyX2NhbignZWRpdF90aGVtZXMnKTsNCiAgICAgICAgfSwNCiAgICBdKTsNCg0KICAgIC8vIFBPU1QgL3dwLWpzb24vYnNwL3YzL3RoZW1lL2ZpbGUtd3JpdGUNCiAgICAvLyBCb2R5OiB7IHJlbHBhdGg6ICdzdHlsZS5jc3MnLCBjb250ZW50OiAnPGZ1bGwgbmV3IGNvbnRlbnRzPicsIGV4cGVjdGVkX3NoYTI1Nj86ICcuLi4nIH0NCiAgICByZWdpc3Rlcl9yZXN0X3JvdXRlKCdic3AvdjMnLCAnL3RoZW1lL2ZpbGUtd3JpdGUnLCBbDQogICAgICAgICdtZXRob2RzJyAgPT4gJ1BPU1QnLA0KICAgICAgICAnY2FsbGJhY2snID0+IGZ1bmN0aW9uKFdQX1JFU1RfUmVxdWVzdCAkcmVxKSB1c2UgKCRhbGxvd2VkX3BhdGhzKSB7DQogICAgICAgICAgICAkcmVsID0gc2FuaXRpemVfdGV4dF9maWVsZCgkcmVxLT5nZXRfcGFyYW0oJ3JlbHBhdGgnKSk7DQogICAgICAgICAgICBpZiAoIWluX2FycmF5KCRyZWwsICRhbGxvd2VkX3BhdGhzLCB0cnVlKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV1BfRXJyb3IoJ2Rpc2FsbG93ZWRfcGF0aCcsICdQYXRoIG5vdCB3aGl0ZWxpc3RlZCcsIFsnc3RhdHVzJyA9PiA0MDBdKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRjb250ZW50ID0gJHJlcS0+Z2V0X3BhcmFtKCdjb250ZW50Jyk7DQogICAgICAgICAgICBpZiAoJGNvbnRlbnQgPT09IG51bGwpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFdQX0Vycm9yKCdtaXNzaW5nX2NvbnRlbnQnLCAnY29udGVudCBwYXJhbSByZXF1aXJlZCcsIFsnc3RhdHVzJyA9PiA0MDBdKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC8vIDUwTUIgaGFyZCBjYXAgdG8gcHJvdGVjdCBhZ2FpbnN0IHJ1bmF3YXkgcGF5bG9hZHMNCiAgICAgICAgICAgIGlmIChzdHJsZW4oJGNvbnRlbnQpID4gNTAgKiAxMDI0ICogMTAyNCkgew0KICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV1BfRXJyb3IoJ3Rvb19sYXJnZScsICdjb250ZW50ID41ME1CJywgWydzdGF0dXMnID0+IDQxM10pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJHBhdGggPSB0cmFpbGluZ3NsYXNoaXQoZ2V0X3N0eWxlc2hlZXRfZGlyZWN0b3J5KCkpIC4gJHJlbDsNCiAgICAgICAgICAgIHJlcXVpcmVfb25jZSBBQlNQQVRIIC4gJ3dwLWFkbWluL2luY2x1ZGVzL2ZpbGUucGhwJzsNCiAgICAgICAgICAgIFdQX0ZpbGVzeXN0ZW0oKTsNCiAgICAgICAgICAgIGdsb2JhbCAkd3BfZmlsZXN5c3RlbTsNCiAgICAgICAgICAgIC8vIHB1dF9jb250ZW50cyB3cml0ZXMgdG8gLndwLXRlbXAte2hhc2h9IHRoZW4gcmVuYW1lcyAtPiBQT1NJWCBhdG9taWMNCiAgICAgICAgICAgIC8vIE5vIGdldF9jb250ZW50cyBjYWxsIC0+IG5vIHJlYWQtdGhlbi13cml0ZSBkb3VibGluZw0KICAgICAgICAgICAgJG9rID0gJHdwX2ZpbGVzeXN0ZW0tPnB1dF9jb250ZW50cygkcGF0aCwgJGNvbnRlbnQsIEZTX0NITU9EX0ZJTEUpOw0KICAgICAgICAgICAgaWYgKCEkb2spIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFdQX0Vycm9yKCd3cml0ZV9mYWlsZWQnLCAncHV0X2NvbnRlbnRzIHJldHVybmVkIGZhbHNlJywgWydzdGF0dXMnID0+IDUwMF0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLy8gVmVyaWZ5IG9uLWRpc2sgc2l6ZSBtYXRjaGVzIHdoYXQgd2Ugd3JvdGUNCiAgICAgICAgICAgIGNsZWFyc3RhdGNhY2hlKHRydWUsICRwYXRoKTsNCiAgICAgICAgICAgICRvbl9kaXNrX3NpemUgPSBmaWxlc2l6ZSgkcGF0aCk7DQogICAgICAgICAgICAkb25fZGlza19zaGEgPSBoYXNoX2ZpbGUoJ3NoYTI1NicsICRwYXRoKTsNCiAgICAgICAgICAgIC8vIEZpcmUgY2FjaGUgcHVyZ2VzDQogICAgICAgICAgICBkb19hY3Rpb24oJ2xpdGVzcGVlZF9wdXJnZV9hbGwnKTsNCiAgICAgICAgICAgIHdwX2NhY2hlX2ZsdXNoKCk7DQogICAgICAgICAgICAvLyBPcHRpb25hbCBzaGEyNTYgdmVyaWZpY2F0aW9uIGJ5IGNsaWVudA0KICAgICAgICAgICAgJGV4cGVjdGVkID0gJHJlcS0+Z2V0X3BhcmFtKCdleHBlY3RlZF9zaGEyNTYnKTsNCiAgICAgICAgICAgICRzaGFfbWF0Y2ggPSAoJGV4cGVjdGVkID09PSBudWxsKSA/IG51bGwgOiAoJG9uX2Rpc2tfc2hhID09PSAkZXhwZWN0ZWQpOw0KICAgICAgICAgICAgcmV0dXJuIFsNCiAgICAgICAgICAgICAgICAnc3VjY2VzcycgICAgICA9PiB0cnVlLA0KICAgICAgICAgICAgICAgICdyZWxwYXRoJyAgICAgID0+ICRyZWwsDQogICAgICAgICAgICAgICAgJ3BhdGgnICAgICAgICAgPT4gJHBhdGgsDQogICAgICAgICAgICAgICAgJ2J5dGVzX3dyaXR0ZW4nPT4gc3RybGVuKCRjb250ZW50KSwNCiAgICAgICAgICAgICAgICAnb25fZGlza19ieXRlcyc9PiAkb25fZGlza19zaXplLA0KICAgICAgICAgICAgICAgICdzaGEyNTYnICAgICAgID0+ICRvbl9kaXNrX3NoYSwNCiAgICAgICAgICAgICAgICAnZXhwZWN0ZWRfc2hhMjU2X21hdGNoJyA9PiAkc2hhX21hdGNoLA0KICAgICAgICAgICAgICAgICdsaXRlc3BlZWRfcHVyZ2VkJyA9PiB0cnVlLA0KICAgICAgICAgICAgICAgICd3cF9jYWNoZV9mbHVzaGVkJyA9PiB0cnVlLA0KICAgICAgICAgICAgXTsNCiAgICAgICAgfSwNCiAgICAgICAgJ3Blcm1pc3Npb25fY2FsbGJhY2snID0+IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRfdXNlcl9jYW4oJ2VkaXRfdGhlbWVzJyk7DQogICAgICAgIH0sDQogICAgXSk7DQp9KTsNCg0KLy8gPT09IEJTUCB2MyB0aGVtZSBmaWxlIGVuZHBvaW50cyAoZW5kKSA9PT0NCi8vIGNhY2hlLWJ1c3QgMjAyNjA1MDVUMjIzMjUyWg0KLy8gc3RyaXAtdjItY2FjaGUtYnVzdCAyMDI2MDUwNVQyMjQ3NTdaDQovLyBzdHJpcC1ELWNhY2hlLWJ1c3QgMjAyNjA1MDVUMjMwMTI2Wg0KLy8gb3A0LWJsb2NrLWMtZ3JpZC1maXgtYnVzdCAyMDI2MDUwNlQwMDI4MzhaDQovLyBvcDQtaGVscGVyLWNzcy1vcmRlci1maXgtYnVzdCAyMDI2MDUwNlQwMTM2MDFaDQoNCiAgLyoqDQogICAqIEJTUCBwaWRfMTU3IGhlYWRlciBmaXggdjIgKGNvZGViYXNlIGRvYyBsaW5lIDgyMSBwYXR0ZXJuLCBhcHBsaWVkIHRvIHRlbXBsYXRlIDkzMikuDQogICAqIFRoZSBCcmlja3MtbmF0aXZlIHRlbXBsYXRlIGNvbmRpdGlvbiBmb3IgOTMyICgiU2luZ3VsYXI6IFBhZ2UiKSBkb2Vzbid0IG1hdGNoDQogICAqIHRoZSBXUCBmcm9udC1wYWdlIGFyY2hldHlwZSAoYm9keSBjbGFzcyAiaG9tZSIpLCBzbyBvbiBwaWRfMTU3IG5vIGhlYWRlciByZW5kZXJzLg0KICAgKiBUaGlzIGhvb2sgZm9yY2UtcmVuZGVycyB0ZW1wbGF0ZSA5MzIgYXQgd3BfYm9keV9vcGVuIHByaW9yaXR5IDEg4oCUIE9OTFkgb24gZnJvbnQtcGFnZS4NCiAgICogSGVscGVyIGJzcF9yZW5kZXJfYnJpY2tzX3RlbXBsYXRlIHJlYWRzIF9icmlja3NfcGFnZV9oZWFkZXJfMiBmaXJzdCBwZXIgSTIgcGF0Y2guDQogICAqIFJldmVyc2libGU6IGRlbGV0ZSB0aGlzIGVudGlyZSBhZGRfYWN0aW9uKCkgYmxvY2suDQogICAqIEF1dGg6IFJvYmVydCBkaXJlY3RpdmUgMjAyNi0wNS0wNiArIENEIG1zZ183MTFlOTA7IGNvZGViYXNlIGRvYyDCpzZhICsgwqc1MS4NCiAgICovDQogIGFkZF9hY3Rpb24oJ3dwX2JvZHlfb3BlbicsIGZ1bmN0aW9uKCkgew0KICAgICAgaWYgKGlzX2FkbWluKCkgfHwgd3BfZG9pbmdfYWpheCgpIHx8IChkZWZpbmVkKCdSRVNUX1JFUVVFU1QnKSAmJiBSRVNUX1JFUVVFU1QpKSByZXR1cm47DQogICAgICBpZiAoIWlzX2Zyb250X3BhZ2UoKSkgcmV0dXJuOw0KICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYnNwX3JlbmRlcl9icmlja3NfdGVtcGxhdGUnKSkgew0KICAgICAgICAgIGJzcF9yZW5kZXJfYnJpY2tzX3RlbXBsYXRlKDkzMiwgJ2hlYWRlcicpOw0KICAgICAgfQ0KICB9LCAxKTsNCg0KDQogIC8vIHBpZDE1Ny1oZWFkZXItZm9yY2UtcmVuZGVyLWJ1c3QgMjAyNjA1MDZUMDU1MDIzWg0KDQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi8vIEJTUCBPcHRpb24gQnJpZGdlIHYzIOKAlCBSRVNUIHN1cmZhY2UgZm9yIEJyaWNrcyBTdHlsZSBNYW5hZ2VyIG9wdGlvbnMNCi8vIENvZGlmaWVkIHBlciBMQVcgwqc4NCAoTWF5IDcgMjAyNikg4oCUIEJTUF9Ccmlja3NfQ29kZWJhc2VfRG9jdW1lbnRhdGlvbi5odG1sDQovLyBSZWZlcmVuY2U6IFdQIFJFU1QgQVBJIEhhbmRib29rIHBlcm1pc3Npb25fY2FsbGJhY2sgcGF0dGVybnMNCi8vICAgaHR0cHM6Ly9kZXZlbG9wZXIud29yZHByZXNzLm9yZy9yZXN0LWFwaS9leHRlbmRpbmctdGhlLXJlc3QtYXBpL2FkZGluZy1jdXN0b20tZW5kcG9pbnRzLw0KLy8gV2hpdGVsaXN0OiBicmlja3NfZ2xvYmFsX2NsYXNzZXMsIGJyaWNrc19nbG9iYWxfdmFyaWFibGVzLCBicmlja3NfdGhlbWVfc3R5bGVzDQovLyBVSUNIRU1ZIHByZXNlcnZhdGlvbiBnYXRlOiB3cml0ZXMgdG8gYnJpY2tzX2dsb2JhbF9jbGFzc2VzIHRoYXQgZHJvcCBicnh1Y18qDQovLyAgIGVudHJpZXMgYXJlIHJlZnVzZWQgKEhUVFAgNDA5KS4gUm9iZXJ0IGRpcmVjdGl2ZSAyMDI2LTA1LTA3Lg0KLy8gUmV2ZXJzaWJsZTogZGVsZXRlIHRoZSBhZGRfYWN0aW9uKCkgYmxvY2sgKyB0aGUgZm91ciBic3BfdjNfb3B0aW9uXyogZnVuY3Rpb25zLg0KLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQphZGRfYWN0aW9uKCdyZXN0X2FwaV9pbml0JywgZnVuY3Rpb24oKSB7DQogICAgcmVnaXN0ZXJfcmVzdF9yb3V0ZSgnYnNwL3YzJywgJy9vcHRpb24vcmVhZCcsIFsNCiAgICAgICAgJ21ldGhvZHMnICAgICAgICAgICAgID0+ICdHRVQnLA0KICAgICAgICAnY2FsbGJhY2snICAgICAgICAgICAgPT4gJ2JzcF92M19vcHRpb25fcmVhZCcsDQogICAgICAgICdwZXJtaXNzaW9uX2NhbGxiYWNrJyA9PiAnYnNwX3YzX29wdGlvbl9jYXBzJywNCiAgICBdKTsNCiAgICByZWdpc3Rlcl9yZXN0X3JvdXRlKCdic3AvdjMnLCAnL29wdGlvbi93cml0ZScsIFsNCiAgICAgICAgJ21ldGhvZHMnICAgICAgICAgICAgID0+ICdQT1NUJywNCiAgICAgICAgJ2NhbGxiYWNrJyAgICAgICAgICAgID0+ICdic3BfdjNfb3B0aW9uX3dyaXRlJywNCiAgICAgICAgJ3Blcm1pc3Npb25fY2FsbGJhY2snID0+ICdic3BfdjNfb3B0aW9uX2NhcHMnLA0KICAgIF0pOw0KfSk7DQpmdW5jdGlvbiBic3BfdjNfb3B0aW9uX2NhcHMoKSB7DQogICAgcmV0dXJuIGN1cnJlbnRfdXNlcl9jYW4oJ21hbmFnZV9vcHRpb25zJyk7DQp9DQpmdW5jdGlvbiBic3BfdjNfb3B0aW9uX3doaXRlbGlzdCgpIHsNCiAgICByZXR1cm4gWydicmlja3NfZ2xvYmFsX2NsYXNzZXMnLCAnYnJpY2tzX2dsb2JhbF92YXJpYWJsZXMnLCAnYnJpY2tzX3RoZW1lX3N0eWxlcycsICdicmlja3NfYnJlYWtwb2ludHMnXTsNCn0NCmZ1bmN0aW9uIGJzcF92M19vcHRpb25fcmVhZChXUF9SRVNUX1JlcXVlc3QgJHJlcSkgew0KICAgICRrZXkgPSBzYW5pdGl6ZV9rZXkoKHN0cmluZykgJHJlcS0+Z2V0X3BhcmFtKCdrZXknKSk7DQogICAgaWYgKCFpbl9hcnJheSgka2V5LCBic3BfdjNfb3B0aW9uX3doaXRlbGlzdCgpLCB0cnVlKSkgew0KICAgICAgICByZXR1cm4gbmV3IFdQX0Vycm9yKCdub3Rfd2hpdGVsaXN0ZWQnLA0KICAgICAgICAgICAgc3ByaW50ZigiS2V5ICclcycgbm90IGluIHdoaXRlbGlzdCIsICRrZXkpLCBbJ3N0YXR1cycgPT4gNDAwXSk7DQogICAgfQ0KICAgICR2YWwgPSBnZXRfb3B0aW9uKCRrZXksIG51bGwpOw0KICAgICRjb3VudCA9IG51bGw7ICRzaGEgPSBudWxsOw0KICAgIGlmIChpc19hcnJheSgkdmFsKSkgICAgICB7ICRjb3VudCA9IGNvdW50KCR2YWwpOyAkc2hhID0gaGFzaCgnc2hhMjU2Jywgd3BfanNvbl9lbmNvZGUoJHZhbCkpOyB9DQogICAgZWxzZWlmIChpc19zdHJpbmcoJHZhbCkpIHsgJGNvdW50ID0gc3RybGVuKCR2YWwpOyAkc2hhID0gaGFzaCgnc2hhMjU2JywgJHZhbCk7IH0NCiAgICByZXR1cm4gWw0KICAgICAgICAna2V5JyAgICA9PiAka2V5LA0KICAgICAgICAnZXhpc3RzJyA9PiAkdmFsICE9PSBudWxsICYmICR2YWwgIT09IGZhbHNlLA0KICAgICAgICAndHlwZScgICA9PiBpc19hcnJheSgkdmFsKSA/ICdhcnJheScgOiAoaXNfc3RyaW5nKCR2YWwpID8gJ3N0cmluZycgOiBnZXR0eXBlKCR2YWwpKSwNCiAgICAgICAgJ2NvdW50JyAgPT4gJGNvdW50LA0KICAgICAgICAnc2hhMjU2JyA9PiAkc2hhLA0KICAgICAgICAndmFsdWUnICA9PiAkdmFsLA0KICAgIF07DQp9DQpmdW5jdGlvbiBic3BfdjNfb3B0aW9uX3dyaXRlKFdQX1JFU1RfUmVxdWVzdCAkcmVxKSB7DQogICAgJGJvZHkgPSAkcmVxLT5nZXRfanNvbl9wYXJhbXMoKTsNCiAgICBpZiAoIWlzX2FycmF5KCRib2R5KSkgew0KICAgICAgICByZXR1cm4gbmV3IFdQX0Vycm9yKCdiYWRfYm9keScsICdCb2R5IG11c3QgYmUgSlNPTiBvYmplY3QnLCBbJ3N0YXR1cycgPT4gNDAwXSk7DQogICAgfQ0KICAgICRrZXkgPSBzYW5pdGl6ZV9rZXkoKHN0cmluZykgKCRib2R5WydrZXknXSA/PyAnJykpOw0KICAgIGlmICghaW5fYXJyYXkoJGtleSwgYnNwX3YzX29wdGlvbl93aGl0ZWxpc3QoKSwgdHJ1ZSkpIHsNCiAgICAgICAgcmV0dXJuIG5ldyBXUF9FcnJvcignbm90X3doaXRlbGlzdGVkJywNCiAgICAgICAgICAgIHNwcmludGYoIktleSAnJXMnIG5vdCBpbiB3aGl0ZWxpc3QiLCAka2V5KSwgWydzdGF0dXMnID0+IDQwMF0pOw0KICAgIH0NCiAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJ3ZhbHVlJywgJGJvZHkpKSB7DQogICAgICAgIHJldHVybiBuZXcgV1BfRXJyb3IoJ21pc3NpbmdfdmFsdWUnLCAiQm9keSBtdXN0IGluY2x1ZGUgJ3ZhbHVlJyIsIFsnc3RhdHVzJyA9PiA0MDBdKTsNCiAgICB9DQogICAgJHZhbHVlID0gJGJvZHlbJ3ZhbHVlJ107DQoNCiAgICAkcHJlID0gZ2V0X29wdGlvbigka2V5LCBudWxsKTsNCiAgICAkcHJlX2NvdW50ID0gaXNfYXJyYXkoJHByZSkgPyBjb3VudCgkcHJlKSA6IChpc19zdHJpbmcoJHByZSkgPyBzdHJsZW4oJHByZSkgOiBudWxsKTsNCiAgICAkcHJlX3NoYSAgID0gaXNfYXJyYXkoJHByZSkgPyBoYXNoKCdzaGEyNTYnLCB3cF9qc29uX2VuY29kZSgkcHJlKSkNCiAgICAgICAgICAgICAgIDogKGlzX3N0cmluZygkcHJlKSA/IGhhc2goJ3NoYTI1NicsICRwcmUpIDogbnVsbCk7DQoNCiAgICBpZiAoJGtleSA9PT0gJ2JyaWNrc19nbG9iYWxfY2xhc3NlcycpIHsNCiAgICAgICAgaWYgKCFpc19hcnJheSgkcHJlKSB8fCAhaXNfYXJyYXkoJHZhbHVlKSkgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBXUF9FcnJvcignc2hhcGVfaW52YWxpZCcsDQogICAgICAgICAgICAgICAgJ2JyaWNrc19nbG9iYWxfY2xhc3NlcyByZXF1aXJlcyBhcnJheSBzaGFwZScsIFsnc3RhdHVzJyA9PiA0MDBdKTsNCiAgICAgICAgfQ0KICAgICAgICAkY291bnRfdWljID0gZnVuY3Rpb24oJGFycikgew0KICAgICAgICAgICAgJG4gPSAwOw0KICAgICAgICAgICAgZm9yZWFjaCAoJGFyciBhcyAkZW50cnkpIHsNCiAgICAgICAgICAgICAgICAkbmFtZSA9IGlzX2FycmF5KCRlbnRyeSkgPyAoc3RyaW5nKSAoJGVudHJ5WyduYW1lJ10gPz8gJycpIDogJyc7DQogICAgICAgICAgICAgICAgaWYgKHN0cnBvcygkbmFtZSwgJ2JyeHVjXycpID09PSAwKSAkbisrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuICRuOw0KICAgICAgICB9Ow0KICAgICAgICAkcHJlX3VpYyA9ICRjb3VudF91aWMoJHByZSk7DQogICAgICAgICRpbmNfdWljID0gJGNvdW50X3VpYygkdmFsdWUpOw0KICAgICAgICBpZiAoJGluY191aWMgPCAkcHJlX3VpYykgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBXUF9FcnJvcigndWljaGVteV9sb3NzJywgc3ByaW50ZigNCiAgICAgICAgICAgICAgICAnVUlDSEVNWSBwcmVzZXJ2YXRpb24gZ2F0ZTogcHJlPSVkIGluY29taW5nPSVkLiBSZWZ1c2luZyB0byBkcm9wIFVJQ0hFTVkgZW50cmllcy4nLA0KICAgICAgICAgICAgICAgICRwcmVfdWljLCAkaW5jX3VpYyksIFsnc3RhdHVzJyA9PiA0MDldKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIGlmICghZW1wdHkoJGJvZHlbJ2RyeV9ydW4nXSkpIHsNCiAgICAgICAgJHBvc3RfY291bnQgPSBpc19hcnJheSgkdmFsdWUpID8gY291bnQoJHZhbHVlKSA6IChpc19zdHJpbmcoJHZhbHVlKSA/IHN0cmxlbigkdmFsdWUpIDogbnVsbCk7DQogICAgICAgICRwb3N0X3NoYSA9IGlzX2FycmF5KCR2YWx1ZSkgPyBoYXNoKCdzaGEyNTYnLCB3cF9qc29uX2VuY29kZSgkdmFsdWUpKQ0KICAgICAgICAgICAgICAgICAgIDogKGlzX3N0cmluZygkdmFsdWUpID8gaGFzaCgnc2hhMjU2JywgJHZhbHVlKSA6IG51bGwpOw0KICAgICAgICByZXR1cm4gWw0KICAgICAgICAgICAgJ2tleScgPT4gJGtleSwgJ2RyeV9ydW4nID0+IHRydWUsICd3cm90ZScgPT4gZmFsc2UsDQogICAgICAgICAgICAncHJlX2NvdW50JyA9PiAkcHJlX2NvdW50LCAncHJlX3NoYScgPT4gJHByZV9zaGEsDQogICAgICAgICAgICAncG9zdF9jb3VudCcgPT4gJHBvc3RfY291bnQsICdwb3N0X3NoYScgPT4gJHBvc3Rfc2hhLA0KICAgICAgICAgICAgJ3NoYV9jaGFuZ2VkJyA9PiAkcHJlX3NoYSAhPT0gJHBvc3Rfc2hhLA0KICAgICAgICBdOw0KICAgIH0NCg0KICAgICRvayA9IHVwZGF0ZV9vcHRpb24oJGtleSwgJHZhbHVlKTsNCiAgICAkcG9zdCA9IGdldF9vcHRpb24oJGtleSwgbnVsbCk7DQogICAgJHBvc3RfY291bnQgPSBpc19hcnJheSgkcG9zdCkgPyBjb3VudCgkcG9zdCkgOiAoaXNfc3RyaW5nKCRwb3N0KSA/IHN0cmxlbigkcG9zdCkgOiBudWxsKTsNCiAgICAkcG9zdF9zaGEgICA9IGlzX2FycmF5KCRwb3N0KSA/IGhhc2goJ3NoYTI1NicsIHdwX2pzb25fZW5jb2RlKCRwb3N0KSkNCiAgICAgICAgICAgICAgICA6IChpc19zdHJpbmcoJHBvc3QpID8gaGFzaCgnc2hhMjU2JywgJHBvc3QpIDogbnVsbCk7DQoNCiAgICBpZiAoJG9rKSB7DQogICAgICAgIGRvX2FjdGlvbignbGl0ZXNwZWVkX3B1cmdlX2FsbCcpOw0KICAgICAgICB3cF9jYWNoZV9mbHVzaCgpOw0KICAgIH0NCg0KICAgIHJldHVybiBbDQogICAgICAgICdrZXknID0+ICRrZXksICd3cm90ZScgPT4gKGJvb2wpICRvaywNCiAgICAgICAgJ3ByZV9jb3VudCcgPT4gJHByZV9jb3VudCwgJ3Bvc3RfY291bnQnID0+ICRwb3N0X2NvdW50LA0KICAgICAgICAncHJlX3NoYScgPT4gJHByZV9zaGEsICdwb3N0X3NoYScgPT4gJHBvc3Rfc2hhLA0KICAgICAgICAnc2hhX2NoYW5nZWQnID0+ICRwcmVfc2hhICE9PSAkcG9zdF9zaGEsDQogICAgXTsNCn0NCi8vIEVORCBCU1AgT3B0aW9uIEJyaWRnZSB2Mw0KDQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi8vIEJTUCBQb3N0bWV0YSBCcmlkZ2UgdjMg4oCUIHJlYWQgYW55IHdoaXRlbGlzdGVkIHBvc3QgbWV0YV9rZXkgKDIwMjYtMDUtMDgpDQovLyBSZWFzb246IGJzcC92Mi9kYi8qIGVuZHBvaW50cyBhcmUgY29udGVudC1vbmx5IChoYXJkY29kZWQgX2JyaWNrc19wYWdlX2NvbnRlbnRfMikuDQovLyBCcmlja3MgaGVhZGVyIHRlbXBsYXRlcyBzdG9yZSBlbGVtZW50IHRyZWVzIGluIF9icmlja3NfcGFnZV9oZWFkZXJfMiDigJQgaW52aXNpYmxlDQovLyB0byB0aGUgZXhpc3Rpbmcgc3VyZmFjZS4gQ29kZWJhc2UgZG9jIMKnODcgZG9jdW1lbnRzIHRoZSBnYXAuDQovLyBXaGl0ZWxpc3QgZW5mb3JjZXMgc2FmZSByZWFkIHNjb3BlIChCcmlja3Mtb25seSBtZXRhIGtleXMsIG5vIHVzZXIvc2VjcmV0IGRhdGEpLg0KLy8gUmV2ZXJzaWJsZTogZGVsZXRlIHRoZSBhZGRfYWN0aW9uIGJsb2NrICsgdGhlIGJzcF92M19wb3N0bWV0YV8qIGZ1bmN0aW9ucy4NCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KYWRkX2FjdGlvbigncmVzdF9hcGlfaW5pdCcsIGZ1bmN0aW9uKCkgew0KICAgIHJlZ2lzdGVyX3Jlc3Rfcm91dGUoJ2JzcC92MycsICcvcG9zdG1ldGEvcmVhZCcsIFsNCiAgICAgICAgJ21ldGhvZHMnICAgICAgICAgICAgID0+ICdHRVQnLA0KICAgICAgICAnY2FsbGJhY2snICAgICAgICAgICAgPT4gJ2JzcF92M19wb3N0bWV0YV9yZWFkJywNCiAgICAgICAgJ3Blcm1pc3Npb25fY2FsbGJhY2snID0+ICdic3BfdjNfcG9zdG1ldGFfY2FwcycsDQogICAgXSk7DQp9KTsNCmZ1bmN0aW9uIGJzcF92M19wb3N0bWV0YV9jYXBzKCkgew0KICAgIHJldHVybiBjdXJyZW50X3VzZXJfY2FuKCdtYW5hZ2Vfb3B0aW9ucycpOw0KfQ0KZnVuY3Rpb24gYnNwX3YzX3Bvc3RtZXRhX3doaXRlbGlzdCgpIHsNCiAgICByZXR1cm4gWw0KICAgICAgICAnX2JyaWNrc19wYWdlX2NvbnRlbnRfMicsDQogICAgICAgICdfYnJpY2tzX3BhZ2VfaGVhZGVyXzInLA0KICAgICAgICAnX2JyaWNrc19wYWdlX2Zvb3Rlcl8yJywNCiAgICAgICAgJ19icmlja3NfcGFnZV9zZXR0aW5ncycsDQogICAgICAgICdfYnJpY2tzX3RlbXBsYXRlX3R5cGUnLA0KICAgICAgICAnX2JyaWNrc190ZW1wbGF0ZV9jb25kaXRpb25zJywNCiAgICAgICAgJ19icmlja3NfdGVtcGxhdGVfc2V0dGluZ3MnLA0KICAgICAgICAnX2JyaWNrc19lZGl0b3JfbW9kZScsDQogICAgXTsNCn0NCmZ1bmN0aW9uIGJzcF92M19wb3N0bWV0YV9yZWFkKFdQX1JFU1RfUmVxdWVzdCAkcmVxKSB7DQogICAgJHBpZCA9IChpbnQpICRyZXEtPmdldF9wYXJhbSgncGlkJyk7DQogICAgJGtleSA9IHNhbml0aXplX3RleHRfZmllbGQoKHN0cmluZykgJHJlcS0+Z2V0X3BhcmFtKCdtZXRhX2tleScpKTsNCiAgICBpZiAoJHBpZCA8PSAwKSB7DQogICAgICAgIHJldHVybiBuZXcgV1BfRXJyb3IoJ2JhZF9waWQnLCAncGlkIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJywgWydzdGF0dXMnID0+IDQwMF0pOw0KICAgIH0NCiAgICBpZiAoIWluX2FycmF5KCRrZXksIGJzcF92M19wb3N0bWV0YV93aGl0ZWxpc3QoKSwgdHJ1ZSkpIHsNCiAgICAgICAgcmV0dXJuIG5ldyBXUF9FcnJvcignbm90X3doaXRlbGlzdGVkJywNCiAgICAgICAgICAgIHNwcmludGYoIm1ldGFfa2V5ICclcycgbm90IGluIHdoaXRlbGlzdCIsICRrZXkpLCBbJ3N0YXR1cycgPT4gNDAwXSk7DQogICAgfQ0KICAgIGlmICghZ2V0X3Bvc3QoJHBpZCkpIHsNCiAgICAgICAgcmV0dXJuIG5ldyBXUF9FcnJvcigncG9zdF9ub3RfZm91bmQnLA0KICAgICAgICAgICAgc3ByaW50ZigncG9zdCAlZCBub3QgZm91bmQnLCAkcGlkKSwgWydzdGF0dXMnID0+IDQwNF0pOw0KICAgIH0NCiAgICAkdmFsID0gZ2V0X3Bvc3RfbWV0YSgkcGlkLCAka2V5LCB0cnVlKTsNCiAgICAkZXhpc3RzID0gKCR2YWwgIT09ICcnICYmICR2YWwgIT09IGZhbHNlICYmICR2YWwgIT09IG51bGwpOw0KICAgICRzaXplID0gaXNfYXJyYXkoJHZhbCkgPyBudWxsIDogc3RybGVuKChzdHJpbmcpICR2YWwpOw0KICAgICRjb3VudCA9IGlzX2FycmF5KCR2YWwpID8gY291bnQoJHZhbCkgOiBudWxsOw0KICAgICRzaGEgPSBpc19hcnJheSgkdmFsKSA/IGhhc2goJ3NoYTI1NicsIHdwX2pzb25fZW5jb2RlKCR2YWwpKSA6IGhhc2goJ3NoYTI1NicsIChzdHJpbmcpICR2YWwpOw0KDQogICAgLy8gT3B0aW9uYWxseSBwYXJzZSBhcyBKU09OIHdoZW4gdmFsdWUgaXMgYSBzdHJpbmcgc3RhcnRpbmcgd2l0aCBbIG9yIHsNCiAgICAkcGFyc2VkID0gbnVsbDsNCiAgICAkcGFyc2VkX2NvdW50ID0gbnVsbDsNCiAgICBpZiAoaXNfc3RyaW5nKCR2YWwpICYmIHN0cmxlbigkdmFsKSA+IDApIHsNCiAgICAgICAgJGZpcnN0ID0gc3Vic3RyKGx0cmltKCR2YWwpLCAwLCAxKTsNCiAgICAgICAgaWYgKCRmaXJzdCA9PT0gJ1snIHx8ICRmaXJzdCA9PT0gJ3snKSB7DQogICAgICAgICAgICAkdG1wID0ganNvbl9kZWNvZGUoJHZhbCwgdHJ1ZSk7DQogICAgICAgICAgICBpZiAoaXNfYXJyYXkoJHRtcCkpIHsNCiAgICAgICAgICAgICAgICAkcGFyc2VkID0gJHRtcDsNCiAgICAgICAgICAgICAgICAkcGFyc2VkX2NvdW50ID0gY291bnQoJHRtcCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICByZXR1cm4gWw0KICAgICAgICAncGlkJyAgICAgICAgICA9PiAkcGlkLA0KICAgICAgICAnbWV0YV9rZXknICAgICA9PiAka2V5LA0KICAgICAgICAnZXhpc3RzJyAgICAgICA9PiAkZXhpc3RzLA0KICAgICAgICAndHlwZScgICAgICAgICA9PiBpc19hcnJheSgkdmFsKSA/ICdhcnJheScgOiBnZXR0eXBlKCR2YWwpLA0KICAgICAgICAnc2l6ZScgICAgICAgICA9PiAkc2l6ZSwNCiAgICAgICAgJ2NvdW50JyAgICAgICAgPT4gJGNvdW50LA0KICAgICAgICAnc2hhMjU2JyAgICAgICA9PiAkc2hhLA0KICAgICAgICAndmFsdWUnICAgICAgICA9PiAkdmFsLA0KICAgICAgICAncGFyc2VkJyAgICAgICA9PiAkcGFyc2VkLA0KICAgICAgICAncGFyc2VkX2NvdW50JyA9PiAkcGFyc2VkX2NvdW50LA0KICAgIF07DQp9DQovLyBFTkQgQlNQIFBvc3RtZXRhIEJyaWRnZSB2Mw0KDQoNCg0KLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQovLyBCU1AgTG9jYXRpb24gUGFnZSBIZWxwZXIgKyBib2R5X2NsYXNzIEZpbHRlciAowqc4NS5BIHJlc3RvcmF0aW9uLCAyMDI2LTA1LTA3KQ0KLy8gUmVzdG9yZXMgQXByIDI0IGNhbm9uaWNhbCBMMSBsYXllciB0aGF0IGRyaWZ0ZWQgcG9zdC1BcHIgMjkgc3RyYXRlZ3kgc2hpZnQuDQovLyBIRUxQRVIgTVVTVCBCRSBERUZJTkVEIEJFRk9SRSBGSUxURVIgUkVHSVNUUkFUSU9OIChBcHIgMjkgc2lsZW50LWZhdGFsIGdvdGNoYSkuDQovLyBDb2RpZmllZCBwZXIgTEFXIMKnODUgaW4gQlNQX0JyaWNrc19Db2RlYmFzZV9Eb2N1bWVudGF0aW9uLmh0bWwuDQovLyBSZXZlcnNpYmxlOiBkZWxldGUgdGhpcyBlbnRpcmUgYmxvY2sgKGhlbHBlciArIGZpbHRlcikuDQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCmZ1bmN0aW9uIGJzcF9sb2NhdGlvbl9wYWdlX3BpZHMoKSB7DQogICAgcmV0dXJuIFsyNTgsIDI4NSwgMjkzLCAyOTQsIDI5NSwgMjk2LCAyOTcsIDI5OCwgMjk5LCAzMDAsIDMwMSwgMzAyLCAzMDMsIDMwNCwgMzA1LCAzMzNdOw0KfQ0KYWRkX2ZpbHRlcignYm9keV9jbGFzcycsIGZ1bmN0aW9uKCRjbGFzc2VzKSB7DQogICAgaWYgKGlzX3Npbmd1bGFyKCkgJiYgaW5fYXJyYXkoZ2V0X3RoZV9JRCgpLCBic3BfbG9jYXRpb25fcGFnZV9waWRzKCksIHRydWUpKSB7DQogICAgICAgICRjbGFzc2VzW10gPSAnYnNwLWxvY2F0aW9uLXBhZ2UnOw0KICAgIH0NCiAgICByZXR1cm4gJGNsYXNzZXM7DQp9KTsNCi8vIEVORCBCU1AgTG9jYXRpb24gUGFnZSBIZWxwZXINCg0KDQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi8vIEJTUCBMb2NhdGlvbiBQYWdlIEZBUSBBY2NvcmRpb24gKMKnODUuRS45IOKAlCB2MywgTWF5IDcgMjAyNikNCi8vIHYzIGZpeDogUStBIFdSQVBQRVIgY29udGFpbmVyIGJyeGUtaWQgKyBET00gd2FsayBmb3IgaDMvcCBpbnNpZGUuDQovLyAgIERpc2NvdmVyeTogQnJpY2tzIGVtaXRzIGJyeGUte2lkfSBpbmNvbnNpc3RlbnRseSAob25seSBvbiBlbGVtZW50cw0KLy8gICB3aXRoIHBlci1lbGVtZW50IENTUyBydWxlcykuIFErQSB3cmFwcGVyIGNvbnRhaW5lcnMgKG9wMTIwZiwgb3AxMjNmLA0KLy8gICBvcDEyNmYsIG9wMTI5Ziwgb3AxMzJmLCBvcDEzNWYpIGFsbCBjYXJyeSBicnhlLWlkIHJlbGlhYmx5Lg0KLy8gUmV2ZXJzaWJsZTogZGVsZXRlIHRoaXMgZW50aXJlIGFkZF9hY3Rpb24oKSBibG9jay4NCmFkZF9hY3Rpb24oJ3dwX2Zvb3RlcicsIGZ1bmN0aW9uKCkgew0KICAgIGlmIChpc19hZG1pbigpIHx8IHdwX2RvaW5nX2FqYXgoKSB8fCAoZGVmaW5lZCgnUkVTVF9SRVFVRVNUJykgJiYgUkVTVF9SRVFVRVNUKSkgcmV0dXJuOw0KICAgIGlmICghaXNfc2luZ3VsYXIoKSkgcmV0dXJuOw0KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCdic3BfbG9jYXRpb25fcGFnZV9waWRzJykpIHJldHVybjsNCiAgICBpZiAoIWluX2FycmF5KGdldF90aGVfSUQoKSwgYnNwX2xvY2F0aW9uX3BhZ2VfcGlkcygpLCB0cnVlKSkgcmV0dXJuOw0KICAgID8+DQo8c2NyaXB0IGlkPSJic3AtbG9jYXRpb24tZmFxLWFjY29yZGlvbi12MyI+DQooZnVuY3Rpb24oKXsNCiAgaWYgKHdpbmRvdy5fX2JzcEZhcUFjY29yZGlvbkluaXRWMykgcmV0dXJuOyB3aW5kb3cuX19ic3BGYXFBY2NvcmRpb25Jbml0VjMgPSB0cnVlOw0KICB2YXIgY29udGFpbmVycyA9IFsnb3AxMjBmJywnb3AxMjNmJywnb3AxMjZmJywnb3AxMjlmJywnb3AxMzJmJywnb3AxMzVmJ107DQogIGZ1bmN0aW9uIHNldHVwKCl7DQogICAgY29udGFpbmVycy5mb3JFYWNoKGZ1bmN0aW9uKGNpZCl7DQogICAgICB2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdicnhlLScgKyBjaWQpOw0KICAgICAgaWYgKCFjIHx8IGMuZGF0YXNldC5ic3BGYXFXaXJlZCkgcmV0dXJuOw0KICAgICAgdmFyIHEgPSBjLnF1ZXJ5U2VsZWN0b3IoJ2gzJyk7DQogICAgICB2YXIgYSA9IGMucXVlcnlTZWxlY3RvcigncCcpOw0KICAgICAgaWYgKCFxIHx8ICFhKSByZXR1cm47DQogICAgICBjLmRhdGFzZXQuYnNwRmFxV2lyZWQgPSAnMSc7DQogICAgICBhLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQogICAgICBxLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJzsNCiAgICAgIHEuc2V0QXR0cmlidXRlKCdyb2xlJywgJ2J1dHRvbicpOw0KICAgICAgcS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTsNCiAgICAgIHEuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7DQogICAgICBmdW5jdGlvbiB0b2dnbGUoKXsNCiAgICAgICAgdmFyIG9wZW4gPSBhLnN0eWxlLmRpc3BsYXkgIT09ICdub25lJzsNCiAgICAgICAgYS5zdHlsZS5kaXNwbGF5ID0gb3BlbiA/ICdub25lJyA6ICdibG9jayc7DQogICAgICAgIHEuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgU3RyaW5nKCFvcGVuKSk7DQogICAgICB9DQogICAgICBxLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdG9nZ2xlKTsNCiAgICAgIHEuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpew0KICAgICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgfHwgZS5rZXkgPT09ICcgJykgeyBlLnByZXZlbnREZWZhdWx0KCk7IHRvZ2dsZSgpOyB9DQogICAgICB9KTsNCiAgICB9KTsNCiAgfQ0KICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSB7DQogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIHNldHVwKTsNCiAgfSBlbHNlIHsNCiAgICBzZXR1cCgpOw0KICB9DQp9KSgpOw0KPC9zY3JpcHQ+DQogICAgPD9waHANCn0sIDk5OSk7DQovLyBFTkQgQlNQIExvY2F0aW9uIFBhZ2UgRkFRIEFjY29yZGlvbg0KDQoNCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAqIEJTUCB2MyAtIHBvc3RtZXRhICsgcGFnZSBjcmVhdGUvcmVuYW1lIGVuZHBvaW50cyAoYWRkZWQgMjAyNi0wNS0xNCkNCiAqIFJlcXVpcmVkIGZvciBtaWdyYXRpb24gd3JpdGVyIChzdGFnaW5nIEJyaWNrcyBwYWdlcyAtPiBwcm9kIHZpYSBSRVNUKS4NCiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8NCmFkZF9hY3Rpb24oJ3Jlc3RfYXBpX2luaXQnLCBmdW5jdGlvbiAoKSB7DQogICAgcmVnaXN0ZXJfcmVzdF9yb3V0ZSgnYnNwL3YzJywgJy9wb3N0bWV0YS93cml0ZScsIGFycmF5KA0KICAgICAgICAnbWV0aG9kcycgICAgICAgICAgICAgPT4gJ1BPU1QnLA0KICAgICAgICAncGVybWlzc2lvbl9jYWxsYmFjaycgPT4gZnVuY3Rpb24gKCkgeyByZXR1cm4gY3VycmVudF91c2VyX2NhbignZWRpdF9wYWdlcycpOyB9LA0KICAgICAgICAnY2FsbGJhY2snICAgICAgICAgICAgPT4gZnVuY3Rpb24gKFdQX1JFU1RfUmVxdWVzdCAkcmVxKSB7DQogICAgICAgICAgICAkYm9keSA9ICRyZXEtPmdldF9qc29uX3BhcmFtcygpOw0KICAgICAgICAgICAgJHBvc3RfaWQgICAgPSBpc3NldCgkYm9keVsncG9zdF9pZCddKSAgICA/IGludHZhbCgkYm9keVsncG9zdF9pZCddKSAgICA6IDA7DQogICAgICAgICAgICAkbWV0YV9rZXkgICA9IGlzc2V0KCRib2R5WydtZXRhX2tleSddKSAgID8gc2FuaXRpemVfdGV4dF9maWVsZCgkYm9keVsnbWV0YV9rZXknXSkgOiAnJzsNCiAgICAgICAgICAgICRtZXRhX3ZhbHVlID0gaXNzZXQoJGJvZHlbJ21ldGFfdmFsdWUnXSkgPyAkYm9keVsnbWV0YV92YWx1ZSddICAgICAgICAgOiBudWxsOw0KICAgICAgICAgICAgaWYgKCEkcG9zdF9pZCB8fCAhJG1ldGFfa2V5KSByZXR1cm4gbmV3IFdQX0Vycm9yKCdiYWRfcmVxdWVzdCcsICdwb3N0X2lkICsgbWV0YV9rZXkgcmVxdWlyZWQnLCBhcnJheSgnc3RhdHVzJz0+NDAwKSk7DQogICAgICAgICAgICBpZiAoIWdldF9wb3N0KCRwb3N0X2lkKSkgICAgIHJldHVybiBuZXcgV1BfRXJyb3IoJ25vdF9mb3VuZCcsICJwb3N0X2lkICRwb3N0X2lkIG1pc3NpbmciLCBhcnJheSgnc3RhdHVzJz0+NDA0KSk7DQogICAgICAgICAgICAkcmVzdWx0ID0gdXBkYXRlX3Bvc3RfbWV0YSgkcG9zdF9pZCwgJG1ldGFfa2V5LCAkbWV0YV92YWx1ZSk7DQogICAgICAgICAgICAkc3RvcmVkID0gZ2V0X3Bvc3RfbWV0YSgkcG9zdF9pZCwgJG1ldGFfa2V5LCB0cnVlKTsNCiAgICAgICAgICAgIHJldHVybiByZXN0X2Vuc3VyZV9yZXNwb25zZShhcnJheSgNCiAgICAgICAgICAgICAgICAnb2snID0+IHRydWUsICdwb3N0X2lkJyA9PiAkcG9zdF9pZCwgJ21ldGFfa2V5JyA9PiAkbWV0YV9rZXksDQogICAgICAgICAgICAgICAgJ3VwZGF0ZWQnID0+IChib29sKSAkcmVzdWx0LA0KICAgICAgICAgICAgICAgICdzaGEyNTYnICA9PiBoYXNoKCdzaGEyNTYnLCBtYXliZV9zZXJpYWxpemUoJHN0b3JlZCkpLA0KICAgICAgICAgICAgICAgICdieXRlcycgICA9PiBzdHJsZW4obWF5YmVfc2VyaWFsaXplKCRzdG9yZWQpKSwNCiAgICAgICAgICAgICAgICAnaXNfYXJyYXknPT4gaXNfYXJyYXkoJHN0b3JlZCksDQogICAgICAgICAgICAgICAgJ2NvdW50JyAgID0+IGlzX2FycmF5KCRzdG9yZWQpID8gY291bnQoJHN0b3JlZCkgOiBudWxsLA0KICAgICAgICAgICAgKSk7DQogICAgICAgIH0sDQogICAgKSk7DQogICAgcmVnaXN0ZXJfcmVzdF9yb3V0ZSgnYnNwL3YzJywgJy9wYWdlL2NyZWF0ZScsIGFycmF5KA0KICAgICAgICAnbWV0aG9kcycgICAgICAgICAgICAgPT4gJ1BPU1QnLA0KICAgICAgICAncGVybWlzc2lvbl9jYWxsYmFjaycgPT4gZnVuY3Rpb24gKCkgeyByZXR1cm4gY3VycmVudF91c2VyX2NhbigncHVibGlzaF9wYWdlcycpOyB9LA0KICAgICAgICAnY2FsbGJhY2snICAgICAgICAgICAgPT4gZnVuY3Rpb24gKFdQX1JFU1RfUmVxdWVzdCAkcmVxKSB7DQogICAgICAgICAgICAkYm9keSA9ICRyZXEtPmdldF9qc29uX3BhcmFtcygpOw0KICAgICAgICAgICAgJHRpdGxlICA9IGlzc2V0KCRib2R5Wyd0aXRsZSddKSAgPyBzYW5pdGl6ZV90ZXh0X2ZpZWxkKCRib2R5Wyd0aXRsZSddKSAgOiAnJzsNCiAgICAgICAgICAgICRzbHVnICAgPSBpc3NldCgkYm9keVsnc2x1ZyddKSAgID8gc2FuaXRpemVfdGl0bGUoJGJvZHlbJ3NsdWcnXSkgICAgICAgIDogJyc7DQogICAgICAgICAgICAkc3RhdHVzID0gaXNzZXQoJGJvZHlbJ3N0YXR1cyddKSA/IHNhbml0aXplX3RleHRfZmllbGQoJGJvZHlbJ3N0YXR1cyddKSA6ICdwdWJsaXNoJzsNCiAgICAgICAgICAgIGlmICghJHNsdWcpIHJldHVybiBuZXcgV1BfRXJyb3IoJ2JhZF9yZXF1ZXN0JywgJ3NsdWcgcmVxdWlyZWQnLCBhcnJheSgnc3RhdHVzJz0+NDAwKSk7DQogICAgICAgICAgICAkZXhpc3RpbmcgPSBnZXRfcGFnZV9ieV9wYXRoKCRzbHVnKTsNCiAgICAgICAgICAgIGlmICgkZXhpc3RpbmcpIHJldHVybiByZXN0X2Vuc3VyZV9yZXNwb25zZShhcnJheSgnb2snPT50cnVlLCdjcmVhdGVkJz0+ZmFsc2UsJ3Bvc3RfaWQnPT4kZXhpc3RpbmctPklELCdleGlzdGluZyc9PnRydWUpKTsNCiAgICAgICAgICAgICRwaWQgPSB3cF9pbnNlcnRfcG9zdChhcnJheSgncG9zdF90aXRsZSc9PigkdGl0bGU/OiRzbHVnKSwncG9zdF9uYW1lJz0+JHNsdWcsJ3Bvc3Rfc3RhdHVzJz0+JHN0YXR1cywncG9zdF90eXBlJz0+J3BhZ2UnLCdwb3N0X2NvbnRlbnQnPT4nJykpOw0KICAgICAgICAgICAgaWYgKGlzX3dwX2Vycm9yKCRwaWQpKSByZXR1cm4gJHBpZDsNCiAgICAgICAgICAgIHJldHVybiByZXN0X2Vuc3VyZV9yZXNwb25zZShhcnJheSgnb2snPT50cnVlLCdjcmVhdGVkJz0+dHJ1ZSwncG9zdF9pZCc9PiRwaWQsJ3NsdWcnPT4kc2x1ZykpOw0KICAgICAgICB9LA0KICAgICkpOw0KICAgIHJlZ2lzdGVyX3Jlc3Rfcm91dGUoJ2JzcC92MycsICcvcGFnZS9yZW5hbWUnLCBhcnJheSgNCiAgICAgICAgJ21ldGhvZHMnICAgICAgICAgICAgID0+ICdQT1NUJywNCiAgICAgICAgJ3Blcm1pc3Npb25fY2FsbGJhY2snID0+IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGN1cnJlbnRfdXNlcl9jYW4oJ2VkaXRfcGFnZXMnKTsgfSwNCiAgICAgICAgJ2NhbGxiYWNrJyAgICAgICAgICAgID0+IGZ1bmN0aW9uIChXUF9SRVNUX1JlcXVlc3QgJHJlcSkgew0KICAgICAgICAgICAgJGJvZHkgPSAkcmVxLT5nZXRfanNvbl9wYXJhbXMoKTsNCiAgICAgICAgICAgICRwb3N0X2lkID0gaXNzZXQoJGJvZHlbJ3Bvc3RfaWQnXSkgPyBpbnR2YWwoJGJvZHlbJ3Bvc3RfaWQnXSkgOiAwOw0KICAgICAgICAgICAgJG5ld19zbHVnID0gaXNzZXQoJGJvZHlbJ25ld19zbHVnJ10pID8gc2FuaXRpemVfdGl0bGUoJGJvZHlbJ25ld19zbHVnJ10pIDogJyc7DQogICAgICAgICAgICBpZiAoISRwb3N0X2lkIHx8ICEkbmV3X3NsdWcpIHJldHVybiBuZXcgV1BfRXJyb3IoJ2JhZF9yZXF1ZXN0JywgJ3Bvc3RfaWQgKyBuZXdfc2x1ZyByZXF1aXJlZCcsIGFycmF5KCdzdGF0dXMnPT40MDApKTsNCiAgICAgICAgICAgICRyZXN1bHQgPSB3cF91cGRhdGVfcG9zdChhcnJheSgnSUQnPT4kcG9zdF9pZCwncG9zdF9uYW1lJz0+JG5ld19zbHVnLCdwb3N0X3N0YXR1cyc9PidwdWJsaXNoJyksIHRydWUpOw0KICAgICAgICAgICAgaWYgKGlzX3dwX2Vycm9yKCRyZXN1bHQpKSByZXR1cm4gJHJlc3VsdDsNCiAgICAgICAgICAgICRwb3N0ID0gZ2V0X3Bvc3QoJHBvc3RfaWQpOw0KICAgICAgICAgICAgcmV0dXJuIHJlc3RfZW5zdXJlX3Jlc3BvbnNlKGFycmF5KCdvayc9PnRydWUsJ3Bvc3RfaWQnPT4kcG9zdF9pZCwnc2x1Zyc9PiRwb3N0LT5wb3N0X25hbWUsJ3N0YXR1cyc9PiRwb3N0LT5wb3N0X3N0YXR1cykpOw0KICAgICAgICB9LA0KICAgICkpOw0KfSk7DQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogKiBFTkQgQlNQIHYzIG1pZ3JhdGlvbiBlbmRwb2ludHMNCiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gTkVYVVMgUElQRUxJTkUgdjEg4oCUIENTUyByZWdlbiArIG1ldGEtZHVtcCBSRVNUIGVuZHBvaW50cwovLyBNYXJrZXI6IE5FWFVTX1BJUEVMSU5FX1YxX1NUQVJUCi8vIERlcGxveWVkOiBQSEFTRV9HX05FWFVTX1BJUEVMSU5FX0VORFBPSU5UU18yMDI2MDUxNVQwOTM5NDNaCi8vIFNvdXJjZTogUm9iZXJ0IGRpcmVjdGl2ZSAyMDI2LTA1LTE1IChUaWVyIDMgUGhhc2UgRykKLy8gVG8gcmVtb3ZlOiBkZWxldGUgZXZlcnl0aGluZyBiZXR3ZWVuIE5FWFVTX1BJUEVMSU5FX1YxX1NUQVJUIGFuZCBORVhVU19QSVBFTElORV9WMV9FTkQgbWFya2VycwovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KYWRkX2FjdGlvbigncmVzdF9hcGlfaW5pdCcsIGZ1bmN0aW9uICgpIHsKICAgIHJlZ2lzdGVyX3Jlc3Rfcm91dGUoJ25leHVzLXBpcGVsaW5lL3YxJywgJy9yZWdlbmVyYXRlLWNzcycsIFsKICAgICAgICAnbWV0aG9kcycgICAgICAgICAgICAgPT4gJ1BPU1QnLAogICAgICAgICdjYWxsYmFjaycgICAgICAgICAgICA9PiAnbmV4dXNfdHJpZ2dlcl9icmlja3NfY3NzX3JlZ2VuJywKICAgICAgICAncGVybWlzc2lvbl9jYWxsYmFjaycgPT4gZnVuY3Rpb24gKCkgeyByZXR1cm4gY3VycmVudF91c2VyX2NhbignbWFuYWdlX29wdGlvbnMnKTsgfSwKICAgIF0pOwogICAgcmVnaXN0ZXJfcmVzdF9yb3V0ZSgnbmV4dXMtcGlwZWxpbmUvdjEnLCAnL21ldGEtZHVtcC8oP1A8aWQ+XGQrKScsIFsKICAgICAgICAnbWV0aG9kcycgICAgICAgICAgICAgPT4gJ0dFVCcsCiAgICAgICAgJ2NhbGxiYWNrJyAgICAgICAgICAgID0+ICduZXh1c19kdW1wX2FsbF9wb3N0X21ldGEnLAogICAgICAgICdwZXJtaXNzaW9uX2NhbGxiYWNrJyA9PiBmdW5jdGlvbiAoKSB7IHJldHVybiBjdXJyZW50X3VzZXJfY2FuKCdtYW5hZ2Vfb3B0aW9ucycpOyB9LAogICAgXSk7Cn0pOwoKZnVuY3Rpb24gbmV4dXNfdHJpZ2dlcl9icmlja3NfY3NzX3JlZ2VuKCkgewogICAgJHRyaWVkID0gW107CiAgICBpZiAoY2xhc3NfZXhpc3RzKCdcXEJyaWNrc1xcQXNzZXRzJykpIHsKICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygnXFxCcmlja3NcXEFzc2V0cycsICdnZW5lcmF0ZV9leHRlcm5hbF9jc3MnKSkgewogICAgICAgICAgICBcQnJpY2tzXEFzc2V0czo6Z2VuZXJhdGVfZXh0ZXJuYWxfY3NzKHRydWUpOwogICAgICAgICAgICAkdHJpZWRbXSA9ICdnZW5lcmF0ZV9leHRlcm5hbF9jc3MnOwogICAgICAgIH0KICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygnXFxCcmlja3NcXEFzc2V0cycsICdnZW5lcmF0ZV9jc3NfZmlsZXMnKSkgewogICAgICAgICAgICBcQnJpY2tzXEFzc2V0czo6Z2VuZXJhdGVfY3NzX2ZpbGVzKCk7CiAgICAgICAgICAgICR0cmllZFtdID0gJ2dlbmVyYXRlX2Nzc19maWxlcyc7CiAgICAgICAgfQogICAgfQogICAgaWYgKGNsYXNzX2V4aXN0cygnXFxCcmlja3NcXERhdGFiYXNlJykgJiYgbWV0aG9kX2V4aXN0cygnXFxCcmlja3NcXERhdGFiYXNlJywgJ3JlbmRlcl9kYXRhJykpIHsKICAgICAgICBcQnJpY2tzXERhdGFiYXNlOjpyZW5kZXJfZGF0YSgpOwogICAgICAgICR0cmllZFtdID0gJ3JlbmRlcl9kYXRhJzsKICAgIH0KICAgIGlmIChlbXB0eSgkdHJpZWQpKSB7CiAgICAgICAgcmV0dXJuIG5ldyBXUF9SRVNUX1Jlc3BvbnNlKFsnc3RhdHVzJyA9PiAnZXJyb3InLCAnbWVzc2FnZScgPT4gJ05vIEJyaWNrcyBjbGFzc2VzL21ldGhvZHMgZm91bmQnXSwgNTAwKTsKICAgIH0KICAgIHJldHVybiBuZXcgV1BfUkVTVF9SZXNwb25zZShbJ3N0YXR1cycgPT4gJ3N1Y2Nlc3MnLCAnbWV0aG9kc19jYWxsZWQnID0+ICR0cmllZF0sIDIwMCk7Cn0KCmZ1bmN0aW9uIG5leHVzX2R1bXBfYWxsX3Bvc3RfbWV0YSgkcmVxdWVzdCkgewogICAgJHBvc3RfaWQgPSAoaW50KSRyZXF1ZXN0WydpZCddOwogICAgaWYgKCFnZXRfcG9zdCgkcG9zdF9pZCkpIHsKICAgICAgICByZXR1cm4gbmV3IFdQX1JFU1RfUmVzcG9uc2UoWydzdGF0dXMnID0+ICdlcnJvcicsICdtZXNzYWdlJyA9PiAnUG9zdCBJRCBub3QgZm91bmQnXSwgNDA0KTsKICAgIH0KICAgICRhbGxfbWV0YSA9IGdldF9wb3N0X21ldGEoJHBvc3RfaWQpOwogICAgJGNsZWFuZWRfbWV0YSA9IFtdOwogICAgZm9yZWFjaCAoJGFsbF9tZXRhIGFzICRrZXkgPT4gJHZhbHVlcykgewogICAgICAgICRjbGVhbmVkX21ldGFbJGtleV0gPSBtYXliZV91bnNlcmlhbGl6ZSgkdmFsdWVzWzBdKTsKICAgIH0KICAgIHJldHVybiBuZXcgV1BfUkVTVF9SZXNwb25zZShbCiAgICAgICAgJ3N0YXR1cycgPT4gJ3N1Y2Nlc3MnLAogICAgICAgICdwb3N0X2lkJyA9PiAkcG9zdF9pZCwKICAgICAgICAncG9zdF90eXBlJyA9PiBnZXRfcG9zdF90eXBlKCRwb3N0X2lkKSwKICAgICAgICAncG9zdF90aXRsZScgPT4gZ2V0X3RoZV90aXRsZSgkcG9zdF9pZCksCiAgICAgICAgJ21ldGFfY291bnQnID0+IGNvdW50KCRjbGVhbmVkX21ldGEpLAogICAgICAgICdtZXRhJyA9PiAkY2xlYW5lZF9tZXRhLAogICAgXSwgMjAwKTsKfQovLyBORVhVU19QSVBFTElORV9WMV9FTkQKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gTkVYVVMgUElQRUxJTkUgdjEg4oCUIFJhbmsgTWF0aCByZWRpcmVjdGlvbiBsaXN0ICsgZGlzYWJsZQovLyBNYXJrZXI6IE5FWFVTX1JNX1NUQVJUCi8vIERlcGxveWVkOiBUUkFDS19BX1JNX0RJU0FCTEVfMjAyNjA1MTVUMTE1MjA5WgovLyBUbyByZW1vdmU6IGRlbGV0ZSBldmVyeXRoaW5nIGJldHdlZW4gTkVYVVNfUk1fU1RBUlQgYW5kIE5FWFVTX1JNX0VORAovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KYWRkX2FjdGlvbigncmVzdF9hcGlfaW5pdCcsIGZ1bmN0aW9uICgpIHsKICAgIHJlZ2lzdGVyX3Jlc3Rfcm91dGUoJ25leHVzLXBpcGVsaW5lL3YxJywgJy9yYW5rLW1hdGgtbGlzdCcsIFsKICAgICAgICAnbWV0aG9kcycgICAgICAgICAgICAgPT4gJ0dFVCcsCiAgICAgICAgJ2NhbGxiYWNrJyAgICAgICAgICAgID0+ICduZXh1c19ybV9saXN0JywKICAgICAgICAncGVybWlzc2lvbl9jYWxsYmFjaycgPT4gZnVuY3Rpb24gKCkgeyByZXR1cm4gY3VycmVudF91c2VyX2NhbignbWFuYWdlX29wdGlvbnMnKTsgfSwKICAgIF0pOwogICAgcmVnaXN0ZXJfcmVzdF9yb3V0ZSgnbmV4dXMtcGlwZWxpbmUvdjEnLCAnL3JhbmstbWF0aC1zZXQtc3RhdHVzLyg/UDxpZD5cZCspJywgWwogICAgICAgICdtZXRob2RzJyAgICAgICAgICAgICA9PiAnUE9TVCcsCiAgICAgICAgJ2NhbGxiYWNrJyAgICAgICAgICAgID0+ICduZXh1c19ybV9zZXRfc3RhdHVzJywKICAgICAgICAncGVybWlzc2lvbl9jYWxsYmFjaycgPT4gZnVuY3Rpb24gKCkgeyByZXR1cm4gY3VycmVudF91c2VyX2NhbignbWFuYWdlX29wdGlvbnMnKTsgfSwKICAgICAgICAnYXJncycgICAgICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAnc3RhdHVzJyA9PiBbJ3JlcXVpcmVkJyA9PiB0cnVlLCAndHlwZScgPT4gJ3N0cmluZyddLAogICAgICAgIF0sCiAgICBdKTsKfSk7CgpmdW5jdGlvbiBuZXh1c19ybV9saXN0KCRyZXF1ZXN0KSB7CiAgICBnbG9iYWwgJHdwZGI7CiAgICAkdGFibGUgPSAkd3BkYi0+cHJlZml4IC4gJ3JhbmtfbWF0aF9yZWRpcmVjdGlvbnMnOwogICAgJHJvd3MgPSAkd3BkYi0+Z2V0X3Jlc3VsdHMoIlNFTEVDVCBpZCwgc291cmNlcywgdXJsX3RvLCBoZWFkZXJfY29kZSwgaGl0cywgc3RhdHVzLCBjcmVhdGVkLCB1cGRhdGVkIEZST00geyR0YWJsZX0gT1JERVIgQlkgaWQgQVNDIiwgQVJSQVlfQSk7CiAgICBpZiAoIWlzX2FycmF5KCRyb3dzKSkgewogICAgICAgIHJldHVybiBuZXcgV1BfUkVTVF9SZXNwb25zZShbJ3N0YXR1cycgPT4gJ2Vycm9yJywgJ21lc3NhZ2UnID0+ICdxdWVyeSBmYWlsZWQnLCAnbGFzdF9lcnJvcicgPT4gJHdwZGItPmxhc3RfZXJyb3JdLCA1MDApOwogICAgfQogICAgLy8gRGVjb2RlIHNlcmlhbGl6ZWQgc291cmNlcwogICAgZm9yZWFjaCAoJHJvd3MgYXMgJiRyKSB7CiAgICAgICAgJG1heWJlID0gQHVuc2VyaWFsaXplKCRyWydzb3VyY2VzJ10pOwogICAgICAgIGlmICgkbWF5YmUgIT09IGZhbHNlIHx8ICRyWydzb3VyY2VzJ10gPT09ICdiOjA7JykgewogICAgICAgICAgICAkclsnc291cmNlc19kZWNvZGVkJ10gPSAkbWF5YmU7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIG5ldyBXUF9SRVNUX1Jlc3BvbnNlKFsnY291bnQnID0+IGNvdW50KCRyb3dzKSwgJ3Jvd3MnID0+ICRyb3dzXSwgMjAwKTsKfQoKZnVuY3Rpb24gbmV4dXNfcm1fc2V0X3N0YXR1cygkcmVxdWVzdCkgewogICAgZ2xvYmFsICR3cGRiOwogICAgJGlkID0gKGludCkgJHJlcXVlc3RbJ2lkJ107CiAgICAkc3RhdHVzID0gc2FuaXRpemVfdGV4dF9maWVsZCgkcmVxdWVzdFsnc3RhdHVzJ10pOwogICAgaWYgKCFpbl9hcnJheSgkc3RhdHVzLCBbJ2FjdGl2ZScsICdpbmFjdGl2ZScsICd0cmFzaGVkJ10sIHRydWUpKSB7CiAgICAgICAgcmV0dXJuIG5ldyBXUF9SRVNUX1Jlc3BvbnNlKFsnc3RhdHVzJyA9PiAnZXJyb3InLCAnbWVzc2FnZScgPT4gJ2ludmFsaWQgc3RhdHVzJ10sIDQwMCk7CiAgICB9CiAgICAkcmVzdWx0ID0gJHdwZGItPnVwZGF0ZSgKICAgICAgICAkd3BkYi0+cHJlZml4IC4gJ3JhbmtfbWF0aF9yZWRpcmVjdGlvbnMnLAogICAgICAgIFsnc3RhdHVzJyA9PiAkc3RhdHVzLCAndXBkYXRlZCcgPT4gY3VycmVudF90aW1lKCdteXNxbCcpXSwKICAgICAgICBbJ2lkJyA9PiAkaWRdCiAgICApOwogICAgcmV0dXJuIG5ldyBXUF9SRVNUX1Jlc3BvbnNlKFsKICAgICAgICAnaWQnID0+ICRpZCwgJ3N0YXR1c19zZXQnID0+ICRzdGF0dXMsICdyb3dzX3VwZGF0ZWQnID0+ICRyZXN1bHQsCiAgICAgICAgJ3dwZGJfZXJyb3InID0+ICR3cGRiLT5sYXN0X2Vycm9yID86IG51bGwsCiAgICBdLCAyMDApOwp9Ci8vIE5FWFVTX1JNX0VORAovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K // §M.1 bsp_loc_map shortcode — Service-area Google Maps iframe — 2026-05-15 // Citation: ported from bricks.callbrightside.com staging shortcode source. // Renders the [bsp_loc_map city="..."] shortcode used on: // - /map/ hub (pid_1700 el 2746f8): city="Kansas City" // - /map/plumber-in-{slug}/ (pid_1646..1680): one per service-area city // Output is a responsive 16:10 iframe pointing at a Google Maps embed for the city. // Zero API keys (uses public maps?q=...&output=embed); lazy-loaded. add_shortcode('bsp_loc_map', 'bsp_loc_map_shortcode'); if (!function_exists('bsp_loc_map_shortcode')) { function bsp_loc_map_shortcode($atts) { $a = shortcode_atts(array('city' => 'Kansas City', 'state' => 'KS', 'zoom' => '11'), $atts, 'bsp_loc_map'); $city = trim((string) $a['city']); $state = trim((string) $a['state']); $zoom = (int) $a['zoom']; if ($zoom < 1 || $zoom > 21) { $zoom = 11; } $query = rawurlencode($city . ', ' . $state); $src = "https://www.google.com/maps?q={$query}&z={$zoom}&output=embed"; $title = esc_attr("Bright Side Plumbing service area in {$city}, {$state}"); return sprintf( '
' . '' . '
', esc_url($src), $title ); } } // §M.1 END https://www.callbrightside.com/service-areas/ 2025-06-13T03:37:28+00:00 https://www.callbrightside.com/service-areas/plumber-fairway-ks/ 2025-06-13T03:37:28+00:00 https://www.callbrightside.com/wp-content/uploads/2024/02/fairway.jpg https://www.callbrightside.com/service-areas/plumber-overland-park-ks/ 2023-09-19T07:17:25+00:00 https://www.callbrightside.com/service-areas/plumber-merriam-ks/ 2023-08-01T15:04:56+00:00 https://www.callbrightside.com/service-areas/plumber-lenexa-ks/ 2023-07-20T21:19:50+00:00 https://www.callbrightside.com/service-areas/plumber-kansas-city-ks/ 2023-07-20T21:18:52+00:00 https://www.callbrightside.com/service-areas/plumber-olathe-ks/ 2023-07-20T21:18:24+00:00 https://www.callbrightside.com/service-areas/plumber-shawnee-ks/ 2023-07-20T21:17:50+00:00 https://www.callbrightside.com/service-areas/plumber-mission-ks/ 2023-07-20T21:17:18+00:00 https://www.callbrightside.com/service-areas/plumber-roeland-park-ks/ 2023-07-20T21:16:43+00:00 https://www.callbrightside.com/service-areas/plumber-prairie-village-ks/ 2023-07-20T21:16:03+00:00 https://www.callbrightside.com/service-areas/plumber-lees-summit-mo/ 2023-07-20T21:15:23+00:00 https://www.callbrightside.com/service-areas/plumber-kansas-city-mo/ 2023-07-20T21:14:25+00:00 https://www.callbrightside.com/service-areas/plumber-grandview-mo/ 2023-07-20T21:13:32+00:00 https://www.callbrightside.com/service-areas/plumber-leawood-ks/ 2023-07-20T21:12:30+00:00 https://www.callbrightside.com/service-areas/plumber-mission-hills-ks/ 2023-07-20T21:11:46+00:00