Compare Norfolk Towns Side by Side
Choose any two of our 42 Norfolk towns and villages to see how they stack up across house prices, transport links, broadband speeds, schools, lifestyle and more. Green highlights show which town comes out ahead in each category.
W3sibiI6IkFjbGUiLCJzIjoiYWNsZSIsImwiOiJodHRwczovL25vcmZvbGtsaXZpbmdndWlkZS5jby51ay9saXZpbmctaW4vYWNsZS8iLCJwIjoyOTAwMDAsInBvcCI6MzAwMCwiY3QiOjE4NTAsInRyYWluIjoiWWVzIiwiY29hc3QiOjEwLCJub3J3aWNoIjoxMCwiYmIiOjU1LCJzY2hvb2xzIjoxLCJ0eXBlIjoiQnJvYWRzIFZpbGxhZ2UiLCJyYXRpbmciOjcuMCwiYmlvIjoiQSBnYXRld2F5IHRvIHRoZSBOb3Jmb2xrIEJyb2FkcyB3aXRoIGEgYnVzeSB3ZWVrbHkgbWFya2V0IGFuZCBzdHJvbmcgY29tbXVuaXR5IGZlZWwsIHNpdHRpbmcgd2hlcmUgdGhlIFJpdmVyIEJ1cmUgbWVldHMgb3BlbiBtYXJzaGxhbmQuIiwiZGluaW5nIjoyLCJiZXN0Rm9yIjoiTmF0dXJlIGxvdmVycyJ9LHsibiI6IkF0dGxlYm9yb3VnaCIsInMiOiJhdHRsZWJvcm91Z2giLCJsIjoiaHR0cHM6Ly9ub3Jmb2xrbGl2aW5nZ3VpZGUuY28udWsvbGl2aW5nLWluL2F0dGxlYm9yb3VnaC8iLCJwIjoyODAwMDAsInBvcCI6MTEwMDAsImN0IjoxODUwLCJ0cmFpbiI6IlllcyIsImNvYXN0IjozNSwibm9yd2ljaCI6MTYsImJiIjo3MCwic2Nob29scyI6MiwidHlwZSI6Ik1hcmtldCBUb3duIiwicmF0aW5nIjo3LjAsImJpbyI6IkEgZmFzdC1ncm93aW5nIG1hcmtldCB0b3duIG9uIHRoZSBBMTEgY29ycmlkb3Igd2l0aCBkaXJlY3QgdHJhaW5zIHRvIE5vcndpY2ggYW5kIENhbWJyaWRnZSwga25vd24gZm9yIGl0cyBhZmZvcmRhYmxlIGhvdXNpbmcgYW5kIGV4cGFuZGluZyBhbWVuaXRpZXMuIiwiZGluaW5nIjozLCJiZXN0Rm9yIjoiQ29tbXV0ZXJzIn0seyJuIjoiQXlsc2hhbSIsInMiOiJheWxzaGFtIiwibCI6Imh0dHBzOi8vbm9yZm9sa2xpdmluZ2d1aWRlLmNvLnVrL2xpdmluZy1pbi9heWxzaGFtLyIsInAiOjMxMDAwMCwicG9wIjo2NTAwLCJjdCI6MTg4MCwidHJhaW4iOiJObyIsImNvYXN0IjoxNCwibm9yd2ljaCI6MTMsImJiIjo1NSwic2Nob29scyI6MiwidHlwZSI6Ik1hcmtldCBUb3duIiwicmF0aW5nIjo4LjAsImJpbyI6IkEgU2xvdyBGb29kIHRvd24gd2l0aCBhIGJlYXV0aWZ1bGx5IHByZXNlcnZlZCBHZW9yZ2lhbiBtYXJrZXQgcGxhY2UsIGhvbWUgdG8gdGhlIEJ1cmUgVmFsbGV5IFJhaWx3YXkgYW5kIHN1cnJvdW5kZWQgYnkgZ3JhbmQgZXN0YXRlcyBpbmNsdWRpbmcgQmxpY2tsaW5nIEhhbGwuIiwiZGluaW5nIjo0LCJiZXN0Rm9yIjoiRmFtaWxpZXMifSx7Im4iOiJCbG9maWVsZCIsInMiOiJibG9maWVsZCIsImwiOiJodHRwczovL25vcmZvbGtsaXZpbmdndWlkZS5jby51ay9saXZpbmctaW4vYmxvZmllbGQvIiwicCI6MzYwMDAwLCJwb3AiOjQwMDAsImN0IjoxODkwLCJ0cmFpbiI6Ik5vIChuZWFyZXN0OiBCcnVuZGFsbCkiLCJjb2FzdCI6MTIsIm5vcndpY2giOjgsImJiIjo2NSwic2Nob29scyI6MSwidHlwZSI6IkJyb2FkcyBWaWxsYWdlIiwicmF0aW5nIjo3LjUsImJpbyI6IkEgcGVhY2VmdWwgdmlsbGFnZSBvbiB0aGUgZWRnZSBvZiB0aGUgQnJvYWRzIHdpdGggZWFzeSBhY2Nlc3MgdG8gTm9yd2ljaCwgcG9wdWxhciB3aXRoIGZhbWlsaWVzIGRyYXduIHRvIGl0cyBwcmltYXJ5IHNjaG9vbCBhbmQgcXVpZXQgbGFuZXMuIiwiZGluaW5nIjoyLCJiZXN0Rm9yIjoiRmFtaWxpZXMifSx7Im4iOiJCcnVuZGFsbCIsInMiOiJicnVuZGFsbCIsImwiOiJodHRwczovL25vcmZvbGtsaXZpbmdndWlkZS5jby51ay9saXZpbmctaW4vYnJ1bmRhbGwvIiwicCI6MzgwMDAwLCJwb3AiOjU1MDAsImN0IjoxOTAwLCJ0cmFpbiI6IlllcyIsImNvYXN0IjoxNCwibm9yd2ljaCI6OCwiYmIiOjcwLCJzY2hvb2xzIjoxLCJ0eXBlIjoiQnJvYWRzIFZpbGxhZ2UiLCJyYXRpbmciOjcuNSwiYmlvIjoiS25vd24gYXMgdGhlIGJvYXRpbmcgY2FwaXRhbCBvZiB0aGUgQnJvYWRzLCB3aXRoIHJpdmVyc2lkZSBtYXJpbmFzLCBhIGRpcmVjdCB0cmFpbiB0byBOb3J3aWNoLCBhbmQgYSB2aWxsYWdlIGZlZWwgZGVzcGl0ZSBzdHJvbmcgdHJhbnNwb3J0IGxpbmtzLiIsImRpbmluZyI6MiwiYmVzdEZvciI6IkNvbW11dGVycyJ9LHsibiI6IkNhaXN0ZXItb24tU2VhIiwicyI6ImNhaXN0ZXItb24tc2VhIiwibCI6Imh0dHBzOi8vbm9yZm9sa2xpdmluZ2d1aWRlLmNvLnVrL2xpdmluZy1pbi9jYWlzdGVyLW9uLXNlYS8iLCJwIjoyNjAwMDAsInBvcCI6OTAwMCwiY3QiOjE4MTAsInRyYWluIjoiTm8gKG5lYXJlc3Q6IEdyZWF0IFlhcm1vdXRoKSIsImNvYXN0IjowLCJub3J3aWNoIjoyMiwiYmIiOjYwLCJzY2hvb2xzIjoyLCJ0eXBlIjoiQ29hc3RhbCBUb3duIiwicmF0aW5nIjo3LjAsImJpbyI6IkEgUm9tYW4gZm9ydCBoZXJpdGFnZSBzaXRlIHR1cm5lZCBzZWFzaWRlIGNvbW11bml0eSB3aXRoIGEgd2lkZSBzYW5keSBiZWFjaCwgYWZmb3JkYWJsZSBob21lcywgYW5kIGEgcXVpZXRlciBhbHRlcm5hdGl2ZSB0byBuZWlnaGJvdXJpbmcgR3JlYXQgWWFybW91dGguIiwiZGluaW5nIjoyLCJiZXN0Rm9yIjoiQmVhY2ggbG92ZXJzIn0seyJuIjoiQ29zdGVzc2V5IiwicyI6ImNvc3Rlc3NleSIsImwiOiJodHRwczovL25vcmZvbGtsaXZpbmdndWlkZS5jby51ay9saXZpbmctaW4vY29zdGVzc2V5LyIsInAiOjMwNTAwMCwicG9wIjoxMjAwMCwiY3QiOjE5MDAsInRyYWluIjoiTm8iLCJjb2FzdCI6MjgsIm5vcndpY2giOjQsImJiIjo4NSwic2Nob29scyI6MiwidHlwZSI6Ik5vcndpY2ggU3VidXJiIiwicmF0aW5nIjo3LjUsImJpbyI6IlNwbGl0IGJldHdlZW4gT2xkIGFuZCBOZXcgQ29zdGVzc2V5LCB0aGlzIE5vcndpY2ggc3VidXJiIG9mZmVycyByaXZlcnNpZGUgd2Fsa3MgYWxvbmcgdGhlIFdlbnN1bSwgYSBsYXJnZSByZXRhaWwgcGFyaywgYW5kIHF1aWNrIGNpdHkgYWNjZXNzLiIsImRpbmluZyI6MywiYmVzdEZvciI6IkNvbW11dGVycyJ9LHsibiI6IkNyb21lciIsInMiOiJjcm9tZXIiLCJsIjoiaHR0cHM6Ly9ub3Jmb2xrbGl2aW5nZ3VpZGUuY28udWsvbGl2aW5nLWluL2Nyb21lci8iLCJwIjoyODUwMDAsInBvcCI6NzUwMCwiY3QiOjE4NzAsInRyYWluIjoiWWVzIiwiY29hc3QiOjAsIm5vcndpY2giOjIzLCJiYiI6NTAsInNjaG9vbHMiOjIsInR5cGUiOiJDb2FzdGFsIFRvd24iLCJyYXRpbmciOjguMCwiYmlvIjoiQSBjbGFzc2ljIFZpY3RvcmlhbiBzZWFzaWRlIHRvd24gZmFtb3VzIGZvciBpdHMgcGllciwgY3JhYiBmaXNoaW5nLCBhbmQgZHJhbWF0aWMgY2xpZmZ0b3Agd2Fsa3MgYWxvbmcgdGhlIERlZXAgSGlzdG9yeSBDb2FzdC4iLCJkaW5pbmciOjQsImJlc3RGb3IiOiJSZXRpcmVlcyJ9LHsibiI6IkRlcmVoYW0iLCJzIjoiZGVyZWhhbSIsImwiOiJodHRwczovL25vcmZvbGtsaXZpbmdndWlkZS5jby51ay9saXZpbmctaW4vZGVyZWhhbS8iLCJwIjoyNzAwMDAsInBvcCI6MjAwMDAsImN0IjoxODYwLCJ0cmFpbiI6Ik5vIiwiY29hc3QiOjMwLCJub3J3aWNoIjoxNiwiYmIiOjYwLCJzY2hvb2xzIjo0LCJ0eXBlIjoiTWFya2V0IFRvd24iLCJyYXRpbmciOjcuMCwiYmlvIjoiVGhlIGdlb2dyYXBoaWNhbCBoZWFydCBvZiBOb3Jmb2xrIHdpdGggYSB0d2ljZS13ZWVrbHkgbWFya2V0LCBCaXNob3AgQm9ubmVycyBDb3R0YWdlIG11c2V1bSwgYW5kIGdvb2Qgc2Nob29sIGNob2ljZXMgYXQgZXZlcnkgbGV2ZWwuIiwiZGluaW5nIjozLCJiZXN0Rm9yIjoiRmFtaWxpZXMifSx7Im4iOiJEaXNzIiwicyI6ImRpc3MiLCJsIjoiaHR0cHM6Ly9ub3Jmb2xrbGl2aW5nZ3VpZGUuY28udWsvbGl2aW5nLWluL2Rpc3MvIiwicCI6MzIwMDAwLCJwb3AiOjgwMDAsImN0IjoxODgwLCJ0cmFpbiI6IlllcyIsImNvYXN0Ijo0MCwibm9yd2ljaCI6MjIsImJiIjo3MCwic2Nob29scyI6MiwidHlwZSI6Ik1hcmtldCBUb3duIiwicmF0aW5nIjo3LjUsImJpbyI6IkEgY2hhcmFjdGVyZnVsIHNvdXRoIE5vcmZvbGsgdG93biBjZW50cmVkIG9uIGEgc2l4LWFjcmUgbWVyZSwgd2l0aCBkaXJlY3QgdHJhaW5zIHRvIExvbmRvbiBMaXZlcnBvb2wgU3RyZWV0IGFuZCBhIHRocml2aW5nIGluZGVwZW5kZW50IGhpZ2ggc3RyZWV0LiIsImRpbmluZyI6NCwiYmVzdEZvciI6IkxvbmRvbiBjb21tdXRlcnMifSx7Im4iOiJEb3duaGFtIE1hcmtldCIsInMiOiJkb3duaGFtLW1hcmtldCIsImwiOiJodHRwczovL25vcmZvbGtsaXZpbmdndWlkZS5jby51ay9saXZpbmctaW4vZG93bmhhbS1tYXJrZXQvIiwicCI6MjUwMDAwLCJwb3AiOjEwMDAwLCJjdCI6MTgyMCwidHJhaW4iOiJZZXMiLCJjb2FzdCI6MjAsIm5vcndpY2giOjQwLCJiYiI6NTUsInNjaG9vbHMiOjIsInR5cGUiOiJNYXJrZXQgVG93biIsInJhdGluZyI6Ny4wLCJiaW8iOiJBIHdlc3QgTm9yZm9sayBtYXJrZXQgdG93biBuZWFyIHRoZSBGZW5zIHdpdGggY29sb3VyZnVsIEdlb3JnaWFuIGJ1aWxkaW5ncyBhbG9uZyB0aGUgaGlnaCBzdHJlZXQgYW5kIGRpcmVjdCB0cmFpbnMgdG8gTG9uZG9uIEtpbmdzIENyb3NzLiIsImRpbmluZyI6MiwiYmVzdEZvciI6IkJ1ZGdldCBidXllcnMifSx7Im4iOiJEcmF5dG9uIiwicyI6ImRyYXl0b24iLCJsIjoiaHR0cHM6Ly9ub3Jmb2xrbGl2aW5nZ3VpZGUuY28udWsvbGl2aW5nLWluL2RyYXl0b24vIiwicCI6MzUwMDAwLCJwb3AiOjcwMDAsImN0IjoxOTEwLCJ0cmFpbiI6Ik5vIiwiY29hc3QiOjI3LCJub3J3aWNoIjo1LCJiYiI6ODAsInNjaG9vbHMiOjEsInR5cGUiOiJOb3J3aWNoIFN1YnVyYiIsInJhdGluZyI6Ny41LCJiaW8iOiJBIGxlYWZ5IG5vcnRoZXJuIE5vcndpY2ggc3VidXJiIHdpdGggYSBzdHJvbmcgdmlsbGFnZSBpZGVudGl0eSwgZ29vZCBsb2NhbCBzaG9wcywgYW5kIGZhc3QgYWNjZXNzIGludG8gdGhlIGNpdHkgdmlhIHRoZSBOb3J0aGVybiBEaXN0cmlidXRvciBSb2FkLiIsImRpbmluZyI6MiwiYmVzdEZvciI6IkZhbWlsaWVzIn0seyJuIjoiRmFrZW5oYW0iLCJzIjoiZmFrZW5oYW0iLCJsIjoiaHR0cHM6Ly9ub3Jmb2xrbGl2aW5nZ3VpZGUuY28udWsvbGl2aW5nLWluL2Zha2VuaGFtLyIsInAiOjI5MDAwMCwicG9wIjo4MDAwLCJjdCI6MTg2MCwidHJhaW4iOiJObyIsImNvYXN0IjoxNCwibm9yd2ljaCI6MjYsImJiIjo1MCwic2Nob29scyI6MiwidHlwZSI6Ik1hcmtldCBUb3duIiwicmF0aW5nIjo3LjUsImJpbyI6IkEgd29ya2luZyBhZ3JpY3VsdHVyYWwgdG93biB3aXRoIGEgd2Vla2x5IFRodXJzZGF5IG1hcmtldCwgYSBob3JzZSByYWNpbmcgY291cnNlLCBhbmQgcHJveGltaXR5IHRvIHRoZSBOb3J0aCBOb3Jmb2xrIGNvYXN0IGFuZCBQZW5zdGhvcnBlIG5hdHVyZSByZXNlcnZlLiIsImRpbmluZyI6MywiYmVzdEZvciI6IkNvdW50cnkgbGl2aW5nIn0seyJuIjoiR29ybGVzdG9uLW9uLVNlYSIsInMiOiJnb3JsZXN0b24tb24tc2VhIiwibCI6Imh0dHBzOi8vbm9yZm9sa2xpdmluZ2d1aWRlLmNvLnVrL2xpdmluZy1pbi9nb3JsZXN0b24tb24tc2VhLyIsInAiOjIyMDAwMCwicG9wIjoyNTAwMCwiY3QiOjE3OTAsInRyYWluIjoiTm8gKG5lYXJlc3Q6IEdyZWF0IFlhcm1vdXRoKSIsImNvYXN0IjowLCJub3J3aWNoIjoyMiwiYmIiOjY1LCJzY2hvb2xzIjo0LCJ0eXBlIjoiQ29hc3RhbCBUb3duIiwicmF0aW5nIjo3LjAsImJpbyI6IkEgbG9jYWxzIGZhdm91cml0ZSB3aXRoIGEgd2lkZSBnb2xkZW4gYmVhY2gsIHRyYWRpdGlvbmFsIGhpZ2ggc3RyZWV0LCBhbmQgYSBtb3JlIHJlbGF4ZWQgcGFjZSB0aGFuIEdyZWF0IFlhcm1vdXRoIGp1c3QgYWNyb3NzIHRoZSByaXZlci4iLCJkaW5pbmciOjMsImJlc3RGb3IiOiJCZWFjaCBsb3ZlcnMifSx7Im4iOiJHcmVhdCBZYXJtb3V0aCIsInMiOiJncmVhdC15YXJtb3V0aCIsImwiOiJodHRwczovL25vcmZvbGtsaXZpbmdndWlkZS5jby51ay9saXZpbmctaW4vZ3JlYXQteWFybW91dGgvIiwicCI6MTk1MDAwLCJwb3AiOjQwMDAwLCJjdCI6MTc4MCwidHJhaW4iOiJZZXMiLCJjb2FzdCI6MCwibm9yd2ljaCI6MjAsImJiIjo2NSwic2Nob29scyI6MTAsInR5cGUiOiJDb2FzdGFsIFRvd24iLCJyYXRpbmciOjYuNSwiYmlvIjoiTm9yZm9sa3MgYmlnZ2VzdCBzZWFzaWRlIHJlc29ydCB3aXRoIGEgZmFtb3VzIHBsZWFzdXJlIGJlYWNoLCB0aGUgUm93cyBtZWRpZXZhbCBsYW5lcywgYW5kIG9uZ29pbmcgcmVnZW5lcmF0aW9uIGJyaW5naW5nIG5ldyBpbnZlc3RtZW50IHRvIHRoZSBzZWFmcm9udC4iLCJkaW5pbmciOjQsImJlc3RGb3IiOiJCdWRnZXQgYnV5ZXJzIn0seyJuIjoiSGFybGVzdG9uIiwicyI6Imhhcmxlc3RvbiIsImwiOiJodHRwczovL25vcmZvbGtsaXZpbmdndWlkZS5jby51ay9saXZpbmctaW4vaGFybGVzdG9uLyIsInAiOjI5NTAwMCwicG9wIjo1MDAwLCJjdCI6MTg0MCwidHJhaW4iOiJObyIsImNvYXN0IjozNSwibm9yd2ljaCI6MjAsImJiIjo0NSwic2Nob29scyI6MSwidHlwZSI6Ik1hcmtldCBUb3duIiwicmF0aW5nIjo3LjAsImJpbyI6IkEgcXVpZXQgV2F2ZW5leSBWYWxsZXkgdG93biB3aXRoIGF3YXJkLXdpbm5pbmcgaW5kZXBlbmRlbnQgc2hvcHMsIGFuIGFydHMgdHJhaWwsIGFuZCBhIHN0cm9uZyBzZW5zZSBvZiBjb21tdW5pdHkgdHVja2VkIGludG8gc291dGggTm9yZm9sayBjb3VudHJ5c2lkZS4iLCJkaW5pbmciOjIsImJlc3RGb3IiOiJRdWlldCBsaXZpbmcifSx7Im4iOiJIZWxsZXNkb24iLCJzIjoiaGVsbGVzZG9uIiwibCI6Imh0dHBzOi8vbm9yZm9sa2xpdmluZ2d1aWRlLmNvLnVrL2xpdmluZy1pbi9oZWxsZXNkb24vIiwicCI6Mjg1MDAwLCJwb3AiOjEzMDAwLCJjdCI6MTkwMCwidHJhaW4iOiJObyIsImNvYXN0IjoyNywibm9yd2ljaCI6MywiYmIiOjkwLCJzY2hvb2xzIjoyLCJ0eXBlIjoiTm9yd2ljaCBTdWJ1cmIiLCJyYXRpbmciOjcuNSwiYmlvIjoiQSB3ZWxsLWNvbm5lY3RlZCBOb3J3aWNoIHN1YnVyYiB3aXRoIGEgbGFyZ2UgcmV0YWlsIHBhcmssIGdvbGYgY291cnNlLCBhbmQgZWFzeSBhY2Nlc3MgdG8gdGhlIE5vcmZvbGsgYW5kIE5vcndpY2ggVW5pdmVyc2l0eSBIb3NwaXRhbC4iLCJkaW5pbmciOjMsImJlc3RGb3IiOiJDb21tdXRlcnMifSx7Im4iOiJIZXRoZXJzZXR0IiwicyI6ImhldGhlcnNldHQiLCJsIjoiaHR0cHM6Ly9ub3Jmb2xrbGl2aW5nZ3VpZGUuY28udWsvbGl2aW5nLWluL2hldGhlcnNldHQvIiwicCI6MzY1MDAwLCJwb3AiOjY1MDAsImN0IjoxOTIwLCJ0cmFpbiI6Ik5vIiwiY29hc3QiOjMwLCJub3J3aWNoIjo2LCJiYiI6ODAsInNjaG9vbHMiOjIsInR5cGUiOiJOb3J3aWNoIFN1YnVyYiIsInJhdGluZyI6OC4wLCJiaW8iOiJBIHNvdWdodC1hZnRlciB2aWxsYWdlIHdpdGggYSBzdHJvbmcgcHJpbWFyeSBhbmQgc2Vjb25kYXJ5IHNjaG9vbCwgYWN0aXZlIHNwb3J0cyBjbHVicywgYW5kIGEgdmlsbGFnZSBoYWxsIHNjZW5lIHRoYXQga2VlcHMgY29tbXVuaXR5IGxpZmUgYnV6emluZy4iLCJkaW5pbmciOjIsImJlc3RGb3IiOiJGYW1pbGllcyJ9LHsibiI6IkhpbmdoYW0iLCJzIjoiaGluZ2hhbSIsImwiOiJodHRwczovL25vcmZvbGtsaXZpbmdndWlkZS5jby51ay9saXZpbmctaW4vaGluZ2hhbS8iLCJwIjozODAwMDAsInBvcCI6MjIwMCwiY3QiOjE5MDAsInRyYWluIjoiTm8iLCJjb2FzdCI6MjgsIm5vcndpY2giOjE0LCJiYiI6NDUsInNjaG9vbHMiOjEsInR5cGUiOiJNYXJrZXQgVG93biIsInJhdGluZyI6Ny41LCJiaW8iOiJBIHBpY3R1cmUtcG9zdGNhcmQgc21hbGwgdG93biB3aXRoIGEgZ3JhbmQgR2VvcmdpYW4gbWFya2V0cGxhY2UsIGxpbmtzIHRvIHRoZSBmb3VuZGluZyBvZiBIaW5naGFtLCBNYXNzYWNodXNldHRzLCBhbmQgYSBjbG9zZS1rbml0IHJ1cmFsIGNvbW11bml0eS4iLCJkaW5pbmciOjIsImJlc3RGb3IiOiJRdWlldCBsaXZpbmcifSx7Im4iOiJIb2x0IiwicyI6ImhvbHQiLCJsIjoiaHR0cHM6Ly9ub3Jmb2xrbGl2aW5nZ3VpZGUuY28udWsvbGl2aW5nLWluL2hvbHQvIiwicCI6Mzg1MDAwLCJwb3AiOjQwMDAsImN0IjoxOTAwLCJ0cmFpbiI6Ik5vIChuZWFyZXN0OiBTaGVyaW5naGFtKSIsImNvYXN0Ijo0LCJub3J3aWNoIjoyNSwiYmIiOjQ1LCJzY2hvb2xzIjoxLCJ0eXBlIjoiTWFya2V0IFRvd24iLCJyYXRpbmciOjguNSwiYmlvIjoiQW4gdXBtYXJrZXQgR2VvcmdpYW4gdG93biBwYWNrZWQgd2l0aCBpbmRlcGVuZGVudCBib3V0aXF1ZXMsIGRlbGlzLCBhbmQgZ2FsbGVyaWVzLCBqdXN0IG1pbnV0ZXMgZnJvbSB0aGUgY29hc3QgYW5kIGhvbWUgdG8gdGhlIHByZXN0aWdpb3VzIEdyZXNoYW1zIFNjaG9vbC4iLCJkaW5pbmciOjUsImJlc3RGb3IiOiJSZXRpcmVlcyJ9LHsibiI6Ikh1bnN0YW50b24iLCJzIjoiaHVuc3RhbnRvbiIsImwiOiJodHRwczovL25vcmZvbGtsaXZpbmdndWlkZS5jby51ay9saXZpbmctaW4vaHVuc3RhbnRvbi8iLCJwIjoyNDUwMDAsInBvcCI6NTAwMCwiY3QiOjE4MzAsInRyYWluIjoiTm8gKG5lYXJlc3Q6IEtpbmdzIEx5bm4pIiwiY29hc3QiOjAsIm5vcndpY2giOjQ4LCJiYiI6NDUsInNjaG9vbHMiOjEsInR5cGUiOiJDb2FzdGFsIFRvd24iLCJyYXRpbmciOjcuMCwiYmlvIjoiVGhlIG9ubHkgd2VzdC1mYWNpbmcgcmVzb3J0IG9uIHRoZSBFYXN0IEFuZ2xpYW4gY29hc3QsIGZhbW91cyBmb3IgaXRzIHN0cmlwZWQgY2xpZmZzLCBzdHVubmluZyBzdW5zZXRzIG92ZXIgVGhlIFdhc2gsIGFuZCB0cmFkaXRpb25hbCBzZWFzaWRlIGNoYXJtLiIsImRpbmluZyI6MywiYmVzdEZvciI6IlJldGlyZWVzIn0seyJuIjoiS2luZ3MgTHlubiIsInMiOiJraW5ncy1seW5uIiwibCI6Imh0dHBzOi8vbm9yZm9sa2xpdmluZ2d1aWRlLmNvLnVrL2xpdmluZy1pbi9raW5ncy1seW5uLyIsInAiOjIzNTAwMCwicG9wIjo0NzAwMCwiY3QiOjE4NTAsInRyYWluIjoiWWVzIiwiY29hc3QiOjEyLCJub3J3aWNoIjo0NSwiYmIiOjcwLCJzY2hvb2xzIjo4LCJ0eXBlIjoiTWFya2V0IFRvd24iLCJyYXRpbmciOjcuNSwiYmlvIjoiQSBoaXN0b3JpYyBwb3J0IHRvd24gd2l0aCBtZWRpZXZhbCBtZXJjaGFudHMgaG91c2VzLCB0aGUgQ3VzdG9tcyBIb3VzZSBvbiB0aGUgcXVheSwgZGlyZWN0IHRyYWlucyB0byBMb25kb24sIGFuZCBhIGdyb3dpbmcgY3VsdHVyYWwgcXVhcnRlci4iLCJkaW5pbmciOjQsImJlc3RGb3IiOiJCdWRnZXQgYnV5ZXJzIn0seyJuIjoiTG9kZG9uIiwicyI6ImxvZGRvbiIsImwiOiJodHRwczovL25vcmZvbGtsaXZpbmdndWlkZS5jby51ay9saXZpbmctaW4vbG9kZG9uLyIsInAiOjM0MDAwMCwicG9wIjozNTAwLCJjdCI6MTg3MCwidHJhaW4iOiJObyIsImNvYXN0IjoyMCwibm9yd2ljaCI6MTIsImJiIjo1MCwic2Nob29scyI6MSwidHlwZSI6Ik1hcmtldCBUb3duIiwicmF0aW5nIjo3LjUsImJpbyI6IkEgaGlkZGVuIGdlbSBvbiB0aGUgUml2ZXIgQ2hldCB3aXRoIHdhdGVyc2lkZSB3YWxrcywgYSBwb3B1bGFyIGNvbW11bml0eSBsaWJyYXJ5LCBhbmQgZWFzeSByZWFjaCB0byBib3RoIE5vcndpY2ggYW5kIHRoZSBCcm9hZHMgd2l0aG91dCB0aGUgcHJlbWl1bSBwcmljZSB0YWcuIiwiZGluaW5nIjoyLCJiZXN0Rm9yIjoiUXVpZXQgbGl2aW5nIn0seyJuIjoiTG9uZyBTdHJhdHRvbiIsInMiOiJsb25nLXN0cmF0dG9uIiwibCI6Imh0dHBzOi8vbm9yZm9sa2xpdmluZ2d1aWRlLmNvLnVrL2xpdmluZy1pbi9sb25nLXN0cmF0dG9uLyIsInAiOjI3NTAwMCwicG9wIjo1MDAwLCJjdCI6MTg1MCwidHJhaW4iOiJObyIsImNvYXN0IjoyOCwibm9yd2ljaCI6MTAsImJiIjo2MCwic2Nob29scyI6MSwidHlwZSI6Ik1hcmtldCBUb3duIiwicmF0aW5nIjo3LjAsImJpbyI6IkEgcmFwaWRseSBkZXZlbG9waW5nIHRvd24gYWxvbmcgdGhlIEExNDAgd2l0aCBhIGxvbmctYXdhaXRlZCBieXBhc3MgdW5kZXIgY29uc3RydWN0aW9uLCBicmluZ2luZyBuZXcgaG91c2luZyBhbmQgYSBmcmVzaCBoaWdoIHN0cmVldCB0byBzb3V0aCBOb3Jmb2xrLiIsImRpbmluZyI6MiwiYmVzdEZvciI6IkJ1ZGdldCBidXllcnMifSx7Im4iOiJNdWxiYXJ0b24iLCJzIjoibXVsYmFydG9uIiwibCI6Imh0dHBzOi8vbm9yZm9sa2xpdmluZ2d1aWRlLmNvLnVrL2xpdmluZy1pbi9tdWxiYXJ0b24vIiwicCI6MzU1MDAwLCJwb3AiOjQwMDAsImN0IjoxOTEwLCJ0cmFpbiI6Ik5vIiwiY29hc3QiOjI4LCJub3J3aWNoIjo3LCJiYiI6NzUsInNjaG9vbHMiOjEsInR5cGUiOiJOb3J3aWNoIFN1YnVyYiIsInJhdGluZyI6Ny41LCJiaW8iOiJBIHZpbGxhZ2UgY2VudHJlZCBvbiBvbmUgb2YgTm9yZm9sa3MgbGFyZ2VzdCBjb21tb25zLCB3aXRoIGFuIG91dHN0YW5kaW5nLXJhdGVkIHByaW1hcnkgc2Nob29sIGFuZCBhIHRpZ2h0LWtuaXQgY29tbXVuaXR5IGp1c3Qgc291dGggb2YgTm9yd2ljaC4iLCJkaW5pbmciOjIsImJlc3RGb3IiOiJGYW1pbGllcyJ9LHsibiI6Ik11bmRlc2xleSIsInMiOiJtdW5kZXNsZXkiLCJsIjoiaHR0cHM6Ly9ub3Jmb2xrbGl2aW5nZ3VpZGUuY28udWsvbGl2aW5nLWluL211bmRlc2xleS8iLCJwIjoyNzUwMDAsInBvcCI6MzAwMCwiY3QiOjE4NTAsInRyYWluIjoiTm8gKG5lYXJlc3Q6IE5vcnRoIFdhbHNoYW0pIiwiY29hc3QiOjAsIm5vcndpY2giOjIwLCJiYiI6NDAsInNjaG9vbHMiOjEsInR5cGUiOiJDb2FzdGFsIFRvd24iLCJyYXRpbmciOjcuNSwiYmlvIjoiQSBwZWFjZWZ1bCBjbGlmZnRvcCB2aWxsYWdlIHdpdGggYSBCbHVlIEZsYWcgYmVhY2gsIE1hcml0aW1lIE11c2V1bSwgYW5kIGEgcXVpZXRlciBjb2FzdGFsIGxpZmVzdHlsZSB3ZWxsIGF3YXkgZnJvbSB0aGUgYnVzaWVyIHJlc29ydCB0b3ducy4iLCJkaW5pbmciOjIsImJlc3RGb3IiOiJSZXRpcmVlcyJ9LHsibiI6Ik5vcnRoIFdhbHNoYW0iLCJzIjoibm9ydGgtd2Fsc2hhbSIsImwiOiJodHRwczovL25vcmZvbGtsaXZpbmdndWlkZS5jby51ay9saXZpbmctaW4vbm9ydGgtd2Fsc2hhbS8iLCJwIjoyNzAwMDAsInBvcCI6MTMwMDAsImN0IjoxODUwLCJ0cmFpbiI6IlllcyIsImNvYXN0Ijo4LCJub3J3aWNoIjoxNSwiYmIiOjU1LCJzY2hvb2xzIjozLCJ0eXBlIjoiTWFya2V0IFRvd24iLCJyYXRpbmciOjcuMCwiYmlvIjoiQSBwcmFjdGljYWwgbm9ydGggTm9yZm9sayBodWIgd2l0aCBhIHdlZWtseSBtYXJrZXQsIFBhc3RvbiBDb2xsZWdlIHNpeHRoIGZvcm0sIHRyYWluIGxpbmtzIHRvIE5vcndpY2gsIGFuZCBhZmZvcmRhYmxlIHByaWNlcyBjbG9zZSB0byB0aGUgY29hc3QuIiwiZGluaW5nIjozLCJiZXN0Rm9yIjoiRmFtaWxpZXMifSx7Im4iOiJOb3J3aWNoIiwicyI6Im5vcndpY2giLCJsIjoiaHR0cHM6Ly9ub3Jmb2xrbGl2aW5nZ3VpZGUuY28udWsvbGl2aW5nLWluL25vcndpY2gvIiwicCI6MzEwMDAwLCJwb3AiOjIxMDAwMCwiY3QiOjE5MDAsInRyYWluIjoiWWVzIiwiY29hc3QiOjI1LCJub3J3aWNoIjowLCJiYiI6MTAwLCJzY2hvb2xzIjo0MiwidHlwZSI6IkNpdHkiLCJyYXRpbmciOjguNSwiYmlvIjoiRW5nbGFuZHMgZmlyc3QgVU5FU0NPIENpdHkgb2YgTGl0ZXJhdHVyZSB3aXRoIGEgTm9ybWFuIGNhc3RsZSwgMzEgbWVkaWV2YWwgY2h1cmNoZXMsIHR3byB1bml2ZXJzaXRpZXMsIGFuZCBhIHRocml2aW5nIGZvb2QgYW5kIGFydHMgc2NlbmUuIiwiZGluaW5nIjo1LCJiZXN0Rm9yIjoiWW91bmcgcHJvZmVzc2lvbmFscyJ9LHsibiI6IlBvcmluZ2xhbmQiLCJzIjoicG9yaW5nbGFuZCIsImwiOiJodHRwczovL25vcmZvbGtsaXZpbmdndWlkZS5jby51ay9saXZpbmctaW4vcG9yaW5nbGFuZC8iLCJwIjozNDUwMDAsInBvcCI6NTAwMCwiY3QiOjE5MTAsInRyYWluIjoiTm8iLCJjb2FzdCI6MjIsIm5vcndpY2giOjYsImJiIjo3NSwic2Nob29scyI6MSwidHlwZSI6Ik5vcndpY2ggU3VidXJiIiwicmF0aW5nIjo3LjUsImJpbyI6IkEgd2VsbC1rZXB0IHZpbGxhZ2Ugc291dGggb2YgTm9yd2ljaCB3aXRoIGEgcG9wdWxhciBjb21tdW5pdHkgY2VudHJlLCBnb29kIGJ1cyBsaW5rcywgYW5kIGNvdW50cnlzaWRlIHdhbGtzIHRvd2FyZHMgRnJhbWluZ2hhbSBFYXJsLiIsImRpbmluZyI6MiwiYmVzdEZvciI6IkZhbWlsaWVzIn0seyJuIjoiUmFja2hlYXRoIiwicyI6InJhY2toZWF0aCIsImwiOiJodHRwczovL25vcmZvbGtsaXZpbmdndWlkZS5jby51ay9saXZpbmctaW4vcmFja2hlYXRoLyIsInAiOjMxMDAwMCwicG9wIjo0NTAwLCJjdCI6MTg5MCwidHJhaW4iOiJObyIsImNvYXN0IjoyMiwibm9yd2ljaCI6NSwiYmIiOjgwLCJzY2hvb2xzIjoxLCJ0eXBlIjoiTm9yd2ljaCBTdWJ1cmIiLCJyYXRpbmciOjcuMCwiYmlvIjoiQSB2aWxsYWdlIG9uIHRoZSBlZGdlIG9mIG1ham9yIGVjby1kZXZlbG9wbWVudCBwbGFucywgd2l0aCBhIGZvcm1lciBXV0lJIGFpcmZpZWxkIHNpdGUgYmVpbmcgdHJhbnNmb3JtZWQgaW50byBvbmUgb2YgTm9yZm9sa3MgbGFyZ2VzdCBuZXcgaG91c2luZyBjb21tdW5pdGllcy4iLCJkaW5pbmciOjEsImJlc3RGb3IiOiJOZXcgYnVpbGQgYnV5ZXJzIn0seyJuIjoiUmVlcGhhbSIsInMiOiJyZWVwaGFtIiwibCI6Imh0dHBzOi8vbm9yZm9sa2xpdmluZ2d1aWRlLmNvLnVrL2xpdmluZy1pbi9yZWVwaGFtLyIsInAiOjM3MDAwMCwicG9wIjozMDAwLCJjdCI6MTg5MCwidHJhaW4iOiJObyIsImNvYXN0IjoxOCwibm9yd2ljaCI6MTMsImJiIjo0NSwic2Nob29scyI6MSwidHlwZSI6Ik1hcmtldCBUb3duIiwicmF0aW5nIjo3LjUsImJpbyI6IkEgY2hhcm1pbmcgc21hbGwgdG93biBrbm93biBmb3IgdGhyZWUgcnVpbmVkIGNodXJjaGVzIGluIG9uZSBjaHVyY2h5YXJkLCBhbiBhbm51YWwgZm9vZCBmZXN0aXZhbCwgYW5kIGEgc3Ryb25nIGFydGlzYW4gY29tbXVuaXR5IGluIHRoZSBNYXJyaW90dHMgV2F5IGNvcnJpZG9yLiIsImRpbmluZyI6MywiYmVzdEZvciI6IkNvdW50cnkgbGl2aW5nIn0seyJuIjoiU2hlcmluZ2hhbSIsInMiOiJzaGVyaW5naGFtIiwibCI6Imh0dHBzOi8vbm9yZm9sa2xpdmluZ2d1aWRlLmNvLnVrL2xpdmluZy1pbi9zaGVyaW5naGFtLyIsInAiOjI5NTAwMCwicG9wIjo3NTAwLCJjdCI6MTg3MCwidHJhaW4iOiJZZXMiLCJjb2FzdCI6MCwibm9yd2ljaCI6MjcsImJiIjo1MCwic2Nob29scyI6MiwidHlwZSI6IkNvYXN0YWwgVG93biIsInJhdGluZyI6OC4wLCJiaW8iOiJBIGZvcm1lciBmaXNoaW5nIHZpbGxhZ2UgdHVybmVkIGJlbG92ZWQgcmVzb3J0IHdpdGggdGhlIE5vcnRoIE5vcmZvbGsgUmFpbHdheSwgU2hlcmluZ2hhbSBQYXJrIChOYXRpb25hbCBUcnVzdCksIGFuZCBhIGxpdmVseSBpbmRlcGVuZGVudCB0aGVhdHJlLiIsImRpbmluZyI6NCwiYmVzdEZvciI6IlJldGlyZWVzIn0seyJuIjoiU3Byb3dzdG9uIiwicyI6InNwcm93c3RvbiIsImwiOiJodHRwczovL25vcmZvbGtsaXZpbmdndWlkZS5jby51ay9saXZpbmctaW4vc3Byb3dzdG9uLyIsInAiOjI5MDAwMCwicG9wIjoxNTAwMCwiY3QiOjE5MDAsInRyYWluIjoiTm8iLCJjb2FzdCI6MjUsIm5vcndpY2giOjMsImJiIjo5MCwic2Nob29scyI6MywidHlwZSI6Ik5vcndpY2ggU3VidXJiIiwicmF0aW5nIjo3LjUsImJpbyI6IkEgbGFyZ2UgTm9yd2ljaCBzdWJ1cmIgd2l0aCBleHRlbnNpdmUgbmV3LWJ1aWxkIGRldmVsb3BtZW50cywgU3Byb3dzdG9uIE1hbm9yIGdvbGYgY291cnNlLCBhbmQgZGlyZWN0IGFjY2VzcyB0byBXcm94aGFtIFJvYWQgZm9yIEJyb2FkcyBkYXkgdHJpcHMuIiwiZGluaW5nIjozLCJiZXN0Rm9yIjoiQ29tbXV0ZXJzIn0seyJuIjoiU3RhbGhhbSIsInMiOiJzdGFsaGFtIiwibCI6Imh0dHBzOi8vbm9yZm9sa2xpdmluZ2d1aWRlLmNvLnVrL2xpdmluZy1pbi9zdGFsaGFtLyIsInAiOjI2MDAwMCwicG9wIjo0NTAwLCJjdCI6MTgzMCwidHJhaW4iOiJObyIsImNvYXN0Ijo2LCJub3J3aWNoIjoxNiwiYmIiOjQ1LCJzY2hvb2xzIjoxLCJ0eXBlIjoiQnJvYWRzIFZpbGxhZ2UiLCJyYXRpbmciOjcuMCwiYmlvIjoiQSBzbWFsbCBtYXJrZXQgdG93biBhdCB0aGUgbm9ydGhlcm4gdGlwIG9mIHRoZSBCcm9hZHMsIHdpdGggdGhlIE11c2V1bSBvZiB0aGUgQnJvYWRzLCB3YXRlcnNpZGUgYWNjZXNzIGF0IFN0YWxoYW0gU3RhaXRoZSwgYW5kIGEgdHJhZGl0aW9uYWwgVHVlc2RheSBtYXJrZXQuIiwiZGluaW5nIjoyLCJiZXN0Rm9yIjoiTmF0dXJlIGxvdmVycyJ9LHsibiI6IlN3YWZmaGFtIiwicyI6InN3YWZmaGFtIiwibCI6Imh0dHBzOi8vbm9yZm9sa2xpdmluZ2d1aWRlLmNvLnVrL2xpdmluZy1pbi9zd2FmZmhhbS8iLCJwIjoyNjUwMDAsInBvcCI6NzUwMCwiY3QiOjE4NDAsInRyYWluIjoiTm8iLCJjb2FzdCI6MjgsIm5vcndpY2giOjI4LCJiYiI6NTAsInNjaG9vbHMiOjIsInR5cGUiOiJNYXJrZXQgVG93biIsInJhdGluZyI6Ny4wLCJiaW8iOiJUaGUgUGVkbGFyIHRvd24gd2l0aCBhIGdyYW5kIGJ1dHRlcmNyb3NzIG1hcmtldCBwbGFjZSwgYSBwb3B1bGFyIFNhdHVyZGF5IGF1Y3Rpb24sIGFuZCBjb3VudHJ5c2lkZSB3YWxrcyB0byBDYXN0bGUgQWNyZSBQcmlvcnkgcnVpbnMuIiwiZGluaW5nIjozLCJiZXN0Rm9yIjoiQnVkZ2V0IGJ1eWVycyJ9LHsibiI6IlRhdmVyaGFtIiwicyI6InRhdmVyaGFtIiwibCI6Imh0dHBzOi8vbm9yZm9sa2xpdmluZ2d1aWRlLmNvLnVrL2xpdmluZy1pbi90YXZlcmhhbS8iLCJwIjozNDAwMDAsInBvcCI6MTMwMDAsImN0IjoxOTIwLCJ0cmFpbiI6Ik5vIiwiY29hc3QiOjI4LCJub3J3aWNoIjo2LCJiYiI6ODAsInNjaG9vbHMiOjIsInR5cGUiOiJOb3J3aWNoIFN1YnVyYiIsInJhdGluZyI6Ny41LCJiaW8iOiJBIHN1YnVyYmFuIHZpbGxhZ2Ugbm9ydGh3ZXN0IG9mIE5vcndpY2ggd2l0aCBhIGdhcmRlbiBjZW50cmUgaHViLCBnb29kIHNjaG9vbHMsIGFuZCBxdWljayBhY2Nlc3MgdG8gdGhlIE5EUiBmb3IgYm90aCBjb2FzdCBhbmQgY2l0eSBjb21tdXRlcy4iLCJkaW5pbmciOjIsImJlc3RGb3IiOiJGYW1pbGllcyJ9LHsibiI6IlRoZXRmb3JkIiwicyI6InRoZXRmb3JkIiwibCI6Imh0dHBzOi8vbm9yZm9sa2xpdmluZ2d1aWRlLmNvLnVrL2xpdmluZy1pbi90aGV0Zm9yZC8iLCJwIjoyMzAwMDAsInBvcCI6MjUwMDAsImN0IjoxODIwLCJ0cmFpbiI6IlllcyIsImNvYXN0Ijo1MCwibm9yd2ljaCI6MzAsImJiIjo2NSwic2Nob29scyI6NSwidHlwZSI6Ik1hcmtldCBUb3duIiwicmF0aW5nIjo2LjUsImJpbyI6IkFuIGFuY2llbnQgdG93biBzdXJyb3VuZGVkIGJ5IFRoZXRmb3JkIEZvcmVzdCwgZmFtb3VzIGFzIHRoZSBmaWxtaW5nIGxvY2F0aW9uIG9mIERhZHMgQXJteSwgd2l0aCBkaXJlY3QgdHJhaW5zIHRvIENhbWJyaWRnZSBhbmQgdGhlIGxvd2VzdCBwcm9wZXJ0eSBwcmljZXMgaW4gTm9yZm9say4iLCJkaW5pbmciOjMsImJlc3RGb3IiOiJCdWRnZXQgYnV5ZXJzIn0seyJuIjoiVGhvcnBlIFN0IEFuZHJldyIsInMiOiJ0aG9ycGUtc3QtYW5kcmV3IiwibCI6Imh0dHBzOi8vbm9yZm9sa2xpdmluZ2d1aWRlLmNvLnVrL2xpdmluZy1pbi90aG9ycGUtc3QtYW5kcmV3LyIsInAiOjMzMDAwMCwicG9wIjoxNDAwMCwiY3QiOjE5MTAsInRyYWluIjoiTm8iLCJjb2FzdCI6MjMsIm5vcndpY2giOjMsImJiIjo5MCwic2Nob29scyI6MiwidHlwZSI6Ik5vcndpY2ggU3VidXJiIiwicmF0aW5nIjo4LjAsImJpbyI6IkEgcml2ZXJzaWRlIHN1YnVyYiB3aXRoIHRoZSBwaWN0dXJlc3F1ZSBUaG9ycGUgUml2ZXIgR3JlZW4sIHVwbWFya2V0IGhvbWVzIGFsb25nIHRoZSBZYXJlLCBhbmQgb25lIG9mIHRoZSBiZXN0IHBvc2l0aW9ucyBmb3IgYWNjZXNzaW5nIGJvdGggY2l0eSBhbmQgQnJvYWRzLiIsImRpbmluZyI6MywiYmVzdEZvciI6IkNvbW11dGVycyJ9LHsibiI6IldhdHRvbiIsInMiOiJ3YXR0b24iLCJsIjoiaHR0cHM6Ly9ub3Jmb2xrbGl2aW5nZ3VpZGUuY28udWsvbGl2aW5nLWluL3dhdHRvbi8iLCJwIjoyNTUwMDAsInBvcCI6ODUwMCwiY3QiOjE4MzAsInRyYWluIjoiTm8iLCJjb2FzdCI6MzUsIm5vcndpY2giOjI0LCJiYiI6NTAsInNjaG9vbHMiOjIsInR5cGUiOiJNYXJrZXQgVG93biIsInJhdGluZyI6Ni41LCJiaW8iOiJBIEJyZWNrbGFuZCB0b3duIHdpdGggYSBkaXN0aW5jdGl2ZSBjbG9jayB0b3dlciwgV2VkbmVzZGF5IG1hcmtldCwgYW5kIGFuIGFmZm9yZGFibGUgZW50cnkgcG9pbnQgaW50byBOb3Jmb2xrIHByb3BlcnR5IHN1cnJvdW5kZWQgYnkgZm9yZXN0IGFuZCBoZWF0aGxhbmQuIiwiZGluaW5nIjoyLCJiZXN0Rm9yIjoiQnVkZ2V0IGJ1eWVycyJ9LHsibiI6IldlbGxzLW5leHQtdGhlLVNlYSIsInMiOiJ3ZWxscy1uZXh0LXRoZS1zZWEiLCJsIjoiaHR0cHM6Ly9ub3Jmb2xrbGl2aW5nZ3VpZGUuY28udWsvbGl2aW5nLWluL3dlbGxzLW5leHQtdGhlLXNlYS8iLCJwIjo0MjAwMDAsInBvcCI6MjUwMCwiY3QiOjE5MjAsInRyYWluIjoiTm8iLCJjb2FzdCI6MCwibm9yd2ljaCI6MzIsImJiIjo0MCwic2Nob29scyI6MSwidHlwZSI6IkNvYXN0YWwgVG93biIsInJhdGluZyI6OC4wLCJiaW8iOiJBIHBpY3R1cmUtcGVyZmVjdCBoYXJib3VyIHRvd24gd2l0aCBjb2xvdXJmdWwgYmVhY2ggaHV0cywgYSBuYXJyb3ctZ2F1Z2UgcmFpbHdheSB0byB0aGUgcGluZS1mcmluZ2VkIGJlYWNoLCBhbmQgYSBzdHJvbmcgeWVhci1yb3VuZCBmb29kaWUgc2NlbmUuIiwiZGluaW5nIjo0LCJiZXN0Rm9yIjoiU2Vjb25kIGhvbWUgb3duZXJzIn0seyJuIjoiV3JveGhhbSIsInMiOiJ3cm94aGFtIiwibCI6Imh0dHBzOi8vbm9yZm9sa2xpdmluZ2d1aWRlLmNvLnVrL2xpdmluZy1pbi93cm94aGFtLyIsInAiOjQwMDAwMCwicG9wIjozMDAwLCJjdCI6MTkxMCwidHJhaW4iOiJZZXMiLCJjb2FzdCI6MTQsIm5vcndpY2giOjgsImJiIjo2MCwic2Nob29scyI6MSwidHlwZSI6IkJyb2FkcyBWaWxsYWdlIiwicmF0aW5nIjo4LjAsImJpbyI6IlRoZSBzZWxmLXByb2NsYWltZWQgQ2FwaXRhbCBvZiB0aGUgQnJvYWRzLCBob21lIHRvIFJveXMgZGVwYXJ0bWVudCBzdG9yZSwgYm9hdCBoaXJlIG9uIHRoZSBCdXJlLCBhbmQgYSB0cmFpbiBsaW5rIHRvIE5vcndpY2ggZnJvbSB0aGlzIHJpdmVyc2lkZSB2aWxsYWdlLiIsImRpbmluZyI6MywiYmVzdEZvciI6Ik5hdHVyZSBsb3ZlcnMifSx7Im4iOiJXeW1vbmRoYW0iLCJzIjoid3ltb25kaGFtIiwibCI6Imh0dHBzOi8vbm9yZm9sa2xpdmluZ2d1aWRlLmNvLnVrL2xpdmluZy1pbi93eW1vbmRoYW0vIiwicCI6MzMwMDAwLCJwb3AiOjE0MDAwLCJjdCI6MTkyMCwidHJhaW4iOiJZZXMiLCJjb2FzdCI6MzAsIm5vcndpY2giOjEwLCJiYiI6ODAsInNjaG9vbHMiOjMsInR5cGUiOiJNYXJrZXQgVG93biIsInJhdGluZyI6OC4wLCJiaW8iOiJBIGhhbmRzb21lIG1hcmtldCB0b3duIHdpdGggYSB0d2luLXRvd2VyZWQgYWJiZXksIHRpbWJlci1mcmFtZWQgTWFya2V0IENyb3NzLCBkaXJlY3QgdHJhaW5zIHRvIE5vcndpY2ggYW5kIENhbWJyaWRnZSwgYW5kIGEgdGhyaXZpbmcgbW9udGhseSBmYXJtZXJzIG1hcmtldC4iLCJkaW5pbmciOjQsImJlc3RGb3IiOiJGYW1pbGllcyJ9XQ==
KGZ1bmN0aW9uKCl7CnZhciByYXc9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5sZy10b3duLWRhdGEiKTsKaWYoIXJhdylyZXR1cm47CnZhciB0b3ducz1KU09OLnBhcnNlKGF0b2IocmF3LnRleHRDb250ZW50LnRyaW0oKSkpOwp2YXIgc2VsQT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmxnLXNlbC1hIik7CnZhciBzZWxCPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJubGctc2VsLWIiKTsKdmFyIHJlc3VsdERpdj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmxnLXJlc3VsdCIpOwoKdG93bnMuZm9yRWFjaChmdW5jdGlvbih0KXsKICB2YXIgb0E9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7b0EudmFsdWU9dC5zO29BLnRleHRDb250ZW50PXQubjtzZWxBLmFwcGVuZENoaWxkKG9BKTsKICB2YXIgb0I9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7b0IudmFsdWU9dC5zO29CLnRleHRDb250ZW50PXQubjtzZWxCLmFwcGVuZENoaWxkKG9CKTsKfSk7CgpmdW5jdGlvbiBmaW5kKHNsdWcpe2Zvcih2YXIgaT0wO2k8dG93bnMubGVuZ3RoO2krKyl7aWYodG93bnNbaV0ucz09PXNsdWcpcmV0dXJuIHRvd25zW2ldO31yZXR1cm4gbnVsbDt9CmZ1bmN0aW9uIGZtdChuKXtyZXR1cm4gbi50b1N0cmluZygpLnJlcGxhY2UoL1xCKD89KFxkezN9KSsoPyFcZCkpL2csIiwiKTt9CmZ1bmN0aW9uIGJlc3QoYSxiLGxvd2VyKXtpZihhPT09YilyZXR1cm4gIiI7aWYobG93ZXIpcmV0dXJuIGE8Yj8ibmxnLWJlc3QiOiIiO3JldHVybiBhPmI/Im5sZy1iZXN0IjoiIjt9CgpmdW5jdGlvbiBsaWZlc3R5bGVTY29yZSh0KXsKICB2YXIgcz0wOwogIC8vIEJyb2FkYmFuZCBxdWFsaXR5ICgwLTE1KQogIGlmKHQuYmI+PTgwKXMrPTE1O2Vsc2UgaWYodC5iYj49NjApcys9MTA7ZWxzZSBpZih0LmJiPj00NSlzKz02O2Vsc2Ugcys9MzsKICAvLyBDb2FzdCBwcm94aW1pdHkgKDAtMTApCiAgaWYodC5jb2FzdD09PTApcys9MTA7ZWxzZSBpZih0LmNvYXN0PD01KXMrPTg7ZWxzZSBpZih0LmNvYXN0PD0xNSlzKz02O2Vsc2UgaWYodC5jb2FzdDw9MjUpcys9MztlbHNlIHMrPTE7CiAgLy8gTm9yd2ljaCBhY2Nlc3MgKDAtMTApCiAgaWYodC5ub3J3aWNoPD01KXMrPTEwO2Vsc2UgaWYodC5ub3J3aWNoPD0xMClzKz04O2Vsc2UgaWYodC5ub3J3aWNoPD0yMClzKz01O2Vsc2UgaWYodC5ub3J3aWNoPD0zMClzKz0zO2Vsc2Ugcys9MTsKICAvLyBUcmFpbiAoMC0xMCkKICBpZih0LnRyYWluPT09IlllcyIpcys9MTA7ZWxzZSBzKz0zOwogIC8vIFNjaG9vbHMgKDAtMTApCiAgaWYodC5zY2hvb2xzPj01KXMrPTEwO2Vsc2UgaWYodC5zY2hvb2xzPj0zKXMrPTg7ZWxzZSBpZih0LnNjaG9vbHM+PTIpcys9NjtlbHNlIHMrPTQ7CiAgLy8gRGluaW5nICgwLTEwKQogIHZhciBkPXQuZGluaW5nfHwyOwogIHMrPWQqMjsKICAvLyBOb3JtYWxpemUgdG8gMTAKICByZXR1cm4gTWF0aC5yb3VuZCgocy82NSkqMTAwKS8xMDsKfQoKZnVuY3Rpb24gZGluaW5nTGFiZWwoZCl7CiAgaWYoZD49NSlyZXR1cm4gIkV4Y2VsbGVudCI7CiAgaWYoZD49NClyZXR1cm4gIlZlcnkgR29vZCI7CiAgaWYoZD49MylyZXR1cm4gIkdvb2QiOwogIGlmKGQ+PTIpcmV0dXJuICJCYXNpYyI7CiAgcmV0dXJuICJMaW1pdGVkIjsKfQoKZnVuY3Rpb24gcXVpY2tTdW1tYXJ5KGEsYil7CiAgdmFyIHBhcnRzPVtdOwogIC8vIFByaWNlIGNvbXBhcmlzb24KICBpZihhLnA8Yi5wKXsKICAgIHBhcnRzLnB1c2goIjxzdHJvbmc+IithLm4rIjwvc3Ryb25nPiBpcyBtb3JlIGFmZm9yZGFibGUgYXQgIitmbXRQcmljZShhLnApKyIgdnMgIitmbXRQcmljZShiLnApKyIgZm9yICIrYi5uKyIuIik7CiAgfWVsc2UgaWYoYi5wPGEucCl7CiAgICBwYXJ0cy5wdXNoKCI8c3Ryb25nPiIrYi5uKyI8L3N0cm9uZz4gaXMgbW9yZSBhZmZvcmRhYmxlIGF0ICIrZm10UHJpY2UoYi5wKSsiIHZzICIrZm10UHJpY2UoYS5wKSsiIGZvciAiK2EubisiLiIpOwogIH0KICAvLyBOb3J3aWNoIGNvbW11dGUKICBpZihhLm5vcndpY2g8Yi5ub3J3aWNoJiZhLm5vcndpY2g8PTEwKXsKICAgIHBhcnRzLnB1c2goYS5uKyIgaGFzIHRoZSBlZGdlIGZvciBOb3J3aWNoIGNvbW11dGVycyBhdCBqdXN0ICIrYS5ub3J3aWNoKyIgbWlsZXMgYXdheS4iKTsKICB9ZWxzZSBpZihiLm5vcndpY2g8YS5ub3J3aWNoJiZiLm5vcndpY2g8PTEwKXsKICAgIHBhcnRzLnB1c2goYi5uKyIgaGFzIHRoZSBlZGdlIGZvciBOb3J3aWNoIGNvbW11dGVycyBhdCBqdXN0ICIrYi5ub3J3aWNoKyIgbWlsZXMgYXdheS4iKTsKICB9CiAgLy8gQ29hc3QKICBpZihhLmNvYXN0PT09MCYmYi5jb2FzdD4wKXsKICAgIHBhcnRzLnB1c2goYS5uKyIgc2l0cyByaWdodCBvbiB0aGUgY29hc3QsIHdoaWxlICIrYi5uKyIgaXMgIitiLmNvYXN0KyIgbWlsZXMgaW5sYW5kLiIpOwogIH1lbHNlIGlmKGIuY29hc3Q9PT0wJiZhLmNvYXN0PjApewogICAgcGFydHMucHVzaChiLm4rIiBzaXRzIHJpZ2h0IG9uIHRoZSBjb2FzdCwgd2hpbGUgIithLm4rIiBpcyAiK2EuY29hc3QrIiBtaWxlcyBpbmxhbmQuIik7CiAgfQogIC8vIFJhdGluZwogIGlmKGEucmF0aW5nPmIucmF0aW5nKXsKICAgIHBhcnRzLnB1c2goYS5uKyIgc2NvcmVzIGhpZ2hlciBvdmVyYWxsIGF0ICIrYS5yYXRpbmcrIi8xMCB2cyAiK2IucmF0aW5nKyIvMTAuIik7CiAgfWVsc2UgaWYoYi5yYXRpbmc+YS5yYXRpbmcpewogICAgcGFydHMucHVzaChiLm4rIiBzY29yZXMgaGlnaGVyIG92ZXJhbGwgYXQgIitiLnJhdGluZysiLzEwIHZzICIrYS5yYXRpbmcrIi8xMC4iKTsKICB9CiAgLy8gQmVzdCBmb3IKICBpZihhLmJlc3RGb3IhPT1iLmJlc3RGb3IpewogICAgcGFydHMucHVzaChhLm4rIiBpcyBiZXN0IHN1aXRlZCBmb3IgPHN0cm9uZz4iK2EuYmVzdEZvci50b0xvd2VyQ2FzZSgpKyI8L3N0cm9uZz4sIHdoaWxlICIrYi5uKyIgc3VpdHMgPHN0cm9uZz4iK2IuYmVzdEZvci50b0xvd2VyQ2FzZSgpKyI8L3N0cm9uZz4uIik7CiAgfQogIGlmKHBhcnRzLmxlbmd0aD09PTApcGFydHMucHVzaCgiVGhlc2UgdHdvIHRvd25zIGFyZSByZW1hcmthYmx5IHNpbWlsYXIgYWNyb3NzIG1vc3QgbWVhc3VyZXMuIik7CiAgcmV0dXJuIHBhcnRzLmpvaW4oIiAiKTsKfQoKZnVuY3Rpb24gZm10UHJpY2UocCl7cmV0dXJuICJcdTAwQTMiK2ZtdChwKTt9Cgpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmxnLWJ0bi1nbyIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpewogIHZhciBhPWZpbmQoc2VsQS52YWx1ZSksYj1maW5kKHNlbEIudmFsdWUpOwogIGlmKCFhfHwhYil7cmVzdWx0RGl2LmlubmVySFRNTD0nPHAgc3R5bGU9ImNvbG9yOiNiMzM7cGFkZGluZzoxMnB4Ij5QbGVhc2Ugc2VsZWN0IHR3byBkaWZmZXJlbnQgdG93bnMgdG8gY29tcGFyZS48L3A+JztyZXN1bHREaXYuY2xhc3NOYW1lPSJubGctcmVzdWx0IGFjdGl2ZSI7cmV0dXJuO30KICBpZihhLnM9PT1iLnMpe3Jlc3VsdERpdi5pbm5lckhUTUw9JzxwIHN0eWxlPSJjb2xvcjojYjMzO3BhZGRpbmc6MTJweCI+UGxlYXNlIHNlbGVjdCB0d28gZGlmZmVyZW50IHRvd25zLjwvcD4nO3Jlc3VsdERpdi5jbGFzc05hbWU9Im5sZy1yZXN1bHQgYWN0aXZlIjtyZXR1cm47fQogIHJlbmRlcihhLGIpOwp9KTsKCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJubGctYnRuLXJlc2V0IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7CiAgc2VsQS52YWx1ZT0iIjtzZWxCLnZhbHVlPSIiO3Jlc3VsdERpdi5jbGFzc05hbWU9Im5sZy1yZXN1bHQiO3Jlc3VsdERpdi5pbm5lckhUTUw9IiI7Cn0pOwoKZnVuY3Rpb24gcmF0aW5nQmFyKHIpewogIHZhciBwY3Q9TWF0aC5yb3VuZChyKjEwKTsKICByZXR1cm4gJzxkaXYgY2xhc3M9Im5sZy1iYXItd3JhcCI+PGRpdiBjbGFzcz0ibmxnLWJhci1iZyI+PGRpdiBjbGFzcz0ibmxnLWJhciIgc3R5bGU9IndpZHRoOicrcGN0KyclIj48L2Rpdj48L2Rpdj48c3Bhbj4nK3IrJy8xMDwvc3Bhbj48L2Rpdj4nOwp9CgpmdW5jdGlvbiByb3cobGFiZWwsdmFsQSx2YWxCLGNsc0EsY2xzQil7CiAgcmV0dXJuICc8dHI+PHRkIHN0eWxlPSJ3aWR0aDozNCUiPicrbGFiZWwrJzwvdGQ+PHRkIGNsYXNzPSInKyhjbHNBfHwnJykrJyIgc3R5bGU9IndpZHRoOjMzJSI+Jyt2YWxBKyc8L3RkPjx0ZCBjbGFzcz0iJysoY2xzQnx8JycpKyciIHN0eWxlPSJ3aWR0aDozMyUiPicrdmFsQisnPC90ZD48L3RyPic7Cn0KCmZ1bmN0aW9uIHJlbmRlcihhLGIpewogIHZhciBsc0E9bGlmZXN0eWxlU2NvcmUoYSksbHNCPWxpZmVzdHlsZVNjb3JlKGIpOwogIHZhciBoPScnOwoKICAvLyBRdWljayBTdW1tYXJ5CiAgaCs9JzxkaXYgY2xhc3M9Im5sZy1zdW1tYXJ5Ij48ZGl2IGNsYXNzPSJubGctc3VtbWFyeS1pY29uIj4mIzk2NzA7PC9kaXY+PGRpdiBjbGFzcz0ibmxnLXN1bW1hcnktdGV4dCI+PHN0cm9uZz5RdWljayBWZXJkaWN0Ojwvc3Ryb25nPiAnK3F1aWNrU3VtbWFyeShhLGIpKyc8L2Rpdj48L2Rpdj4nOwoKICAvLyBUb3duIENhcmRzIHdpdGggYmlvcwogIGgrPSc8ZGl2IGNsYXNzPSJubGctY2FyZHMiPjxkaXYgY2xhc3M9Im5sZy1jYXJkIj48ZGl2IGNsYXNzPSJubGctY2FyZC1yYXRpbmciPjxkaXYgY2xhc3M9Im5sZy1zY29yZSI+JythLnJhdGluZysnPC9kaXY+PGRpdiBjbGFzcz0ibmxnLW9mIj5vdXQgb2YgMTA8L2Rpdj48L2Rpdj48aDMgY2xhc3M9Im5sZy1jYXJkLW5hbWUiPicrYS5uKyc8L2gzPjxkaXYgY2xhc3M9Im5sZy1jYXJkLXR5cGUiPicrYS50eXBlKyc8L2Rpdj4nOwogIGlmKGEuYmlvKWgrPSc8cCBjbGFzcz0ibmxnLWNhcmQtYmlvIj4nK2EuYmlvKyc8L3A+JzsKICBoKz0nPGRpdiBjbGFzcz0ibmxnLWNhcmQtbGlua3MiPjxhIGhyZWY9IicrYS5sKyciIGNsYXNzPSJubGctZ3VpZGUtYnRuIj5WaWV3IEZ1bGwgR3VpZGU8L2E+PC9kaXY+PC9kaXY+JzsKCiAgaCs9JzxkaXYgY2xhc3M9Im5sZy1jYXJkIj48ZGl2IGNsYXNzPSJubGctY2FyZC1yYXRpbmciPjxkaXYgY2xhc3M9Im5sZy1zY29yZSI+JytiLnJhdGluZysnPC9kaXY+PGRpdiBjbGFzcz0ibmxnLW9mIj5vdXQgb2YgMTA8L2Rpdj48L2Rpdj48aDMgY2xhc3M9Im5sZy1jYXJkLW5hbWUiPicrYi5uKyc8L2gzPjxkaXYgY2xhc3M9Im5sZy1jYXJkLXR5cGUiPicrYi50eXBlKyc8L2Rpdj4nOwogIGlmKGIuYmlvKWgrPSc8cCBjbGFzcz0ibmxnLWNhcmQtYmlvIj4nK2IuYmlvKyc8L3A+JzsKICBoKz0nPGRpdiBjbGFzcz0ibmxnLWNhcmQtbGlua3MiPjxhIGhyZWY9IicrYi5sKyciIGNsYXNzPSJubGctZ3VpZGUtYnRuIj5WaWV3IEZ1bGwgR3VpZGU8L2E+PC9kaXY+PC9kaXY+PC9kaXY+JzsKCiAgLy8gT3ZlcnZpZXcKICBoKz0nPGRpdiBjbGFzcz0ibmxnLXNlY3Rpb24iPjxkaXYgY2xhc3M9Im5sZy1zZWN0aW9uLXRpdGxlIj5PdmVydmlldzwvZGl2Pjx0YWJsZSBjbGFzcz0ibmxnLXRhYmxlIj48dGhlYWQ+PHRyPjx0aD48L3RoPjx0aD4nK2EubisnPC90aD48dGg+JytiLm4rJzwvdGg+PC90cj48L3RoZWFkPjx0Ym9keT4nOwogIGgrPXJvdygiVHlwZSIsYS50eXBlLGIudHlwZSk7CiAgaCs9cm93KCJQb3B1bGF0aW9uIixmbXQoYS5wb3ApLGZtdChiLnBvcCksYmVzdChhLnBvcCxiLnBvcCxmYWxzZSksYmVzdChiLnBvcCxhLnBvcCxmYWxzZSkpOwogIGgrPXJvdygiRGlzdGFuY2UgdG8gTm9yd2ljaCIsYS5ub3J3aWNoPT09MD8iSW4gTm9yd2ljaCI6YS5ub3J3aWNoKyIgbWlsZXMiLGIubm9yd2ljaD09PTA/IkluIE5vcndpY2giOmIubm9yd2ljaCsiIG1pbGVzIixiZXN0KGEubm9yd2ljaCxiLm5vcndpY2gsdHJ1ZSksYmVzdChiLm5vcndpY2gsYS5ub3J3aWNoLHRydWUpKTsKICBoKz1yb3coIkRpc3RhbmNlIHRvIENvYXN0IixhLmNvYXN0PT09MD8iT24gdGhlIGNvYXN0IjphLmNvYXN0KyIgbWlsZXMiLGIuY29hc3Q9PT0wPyJPbiB0aGUgY29hc3QiOmIuY29hc3QrIiBtaWxlcyIsYmVzdChhLmNvYXN0LGIuY29hc3QsdHJ1ZSksYmVzdChiLmNvYXN0LGEuY29hc3QsdHJ1ZSkpOwogIGgrPSc8L3Rib2R5PjwvdGFibGU+PC9kaXY+JzsKCiAgLy8gUHJvcGVydHkgJiBDb3N0IG9mIExpdmluZwogIGgrPSc8ZGl2IGNsYXNzPSJubGctc2VjdGlvbiI+PGRpdiBjbGFzcz0ibmxnLXNlY3Rpb24tdGl0bGUiPlByb3BlcnR5IGFuZCBDb3N0IG9mIExpdmluZzwvZGl2Pjx0YWJsZSBjbGFzcz0ibmxnLXRhYmxlIj48dGhlYWQ+PHRyPjx0aD48L3RoPjx0aD4nK2EubisnPC90aD48dGg+JytiLm4rJzwvdGg+PC90cj48L3RoZWFkPjx0Ym9keT4nOwogIGgrPXJvdygiQXZnIEhvdXNlIFByaWNlIixmbXRQcmljZShhLnApLGZtdFByaWNlKGIucCksYmVzdChhLnAsYi5wLHRydWUpLGJlc3QoYi5wLGEucCx0cnVlKSk7CiAgdmFyIGRpZmY9TWF0aC5hYnMoYS5wLWIucCk7CiAgaCs9cm93KCJQcmljZSBEaWZmZXJlbmNlIiwoYS5wPD1iLnA/Zm10UHJpY2UoZGlmZikrIiBsZXNzIjoiIiksKCBiLnA8PWEucD9mbXRQcmljZShkaWZmKSsiIGxlc3MiOiIiKSk7CiAgaCs9cm93KCJDb3VuY2lsIFRheCAoQmFuZCBEKSIsZm10UHJpY2UoYS5jdCksZm10UHJpY2UoYi5jdCksYmVzdChhLmN0LGIuY3QsdHJ1ZSksYmVzdChiLmN0LGEuY3QsdHJ1ZSkpOwogIGgrPSc8L3Rib2R5PjwvdGFibGU+PC9kaXY+JzsKCiAgLy8gVHJhbnNwb3J0ICYgQ29ubmVjdGl2aXR5CiAgaCs9JzxkaXYgY2xhc3M9Im5sZy1zZWN0aW9uIj48ZGl2IGNsYXNzPSJubGctc2VjdGlvbi10aXRsZSI+VHJhbnNwb3J0IGFuZCBDb25uZWN0aXZpdHk8L2Rpdj48dGFibGUgY2xhc3M9Im5sZy10YWJsZSI+PHRoZWFkPjx0cj48dGg+PC90aD48dGg+JythLm4rJzwvdGg+PHRoPicrYi5uKyc8L3RoPjwvdHI+PC90aGVhZD48dGJvZHk+JzsKICBoKz1yb3coIkJyb2FkYmFuZCIsYS5iYisiIE1icHMiLGIuYmIrIiBNYnBzIixiZXN0KGEuYmIsYi5iYixmYWxzZSksYmVzdChiLmJiLGEuYmIsZmFsc2UpKTsKICB2YXIgdHJhaW5CZXN0QT1hLnRyYWluPT09IlllcyImJmIudHJhaW4hPT0iWWVzIj8ibmxnLWJlc3QiOiIiOwogIHZhciB0cmFpbkJlc3RCPWIudHJhaW49PT0iWWVzIiYmYS50cmFpbiE9PSJZZXMiPyJubGctYmVzdCI6IiI7CiAgaCs9cm93KCJUcmFpbiBTdGF0aW9uIixhLnRyYWluLGIudHJhaW4sdHJhaW5CZXN0QSx0cmFpbkJlc3RCKTsKICBoKz0nPC90Ym9keT48L3RhYmxlPjwvZGl2Pic7CgogIC8vIEVkdWNhdGlvbgogIGgrPSc8ZGl2IGNsYXNzPSJubGctc2VjdGlvbiI+PGRpdiBjbGFzcz0ibmxnLXNlY3Rpb24tdGl0bGUiPkVkdWNhdGlvbjwvZGl2Pjx0YWJsZSBjbGFzcz0ibmxnLXRhYmxlIj48dGhlYWQ+PHRyPjx0aD48L3RoPjx0aD4nK2EubisnPC90aD48dGg+JytiLm4rJzwvdGg+PC90cj48L3RoZWFkPjx0Ym9keT4nOwogIGgrPXJvdygiUHJpbWFyeSBTY2hvb2xzIixhLnNjaG9vbHMsYi5zY2hvb2xzLGJlc3QoYS5zY2hvb2xzLGIuc2Nob29scyxmYWxzZSksYmVzdChiLnNjaG9vbHMsYS5zY2hvb2xzLGZhbHNlKSk7CiAgaCs9JzwvdGJvZHk+PC90YWJsZT48L2Rpdj4nOwoKICAvLyBMaWZlc3R5bGUgKE5FVykKICBoKz0nPGRpdiBjbGFzcz0ibmxnLXNlY3Rpb24iPjxkaXYgY2xhc3M9Im5sZy1zZWN0aW9uLXRpdGxlIj5MaWZlc3R5bGU8L2Rpdj48dGFibGUgY2xhc3M9Im5sZy10YWJsZSI+PHRoZWFkPjx0cj48dGg+PC90aD48dGg+JythLm4rJzwvdGg+PHRoPicrYi5uKyc8L3RoPjwvdHI+PC90aGVhZD48dGJvZHk+JzsKICBoKz1yb3coIkNoYXJhY3RlciIsYS50eXBlLGIudHlwZSk7CiAgaCs9cm93KCJCZXN0IEZvciIsYS5iZXN0Rm9yfHwiLSIsYi5iZXN0Rm9yfHwiLSIpOwogIGgrPXJvdygiTmVhcmVzdCBCZWFjaCIsYS5jb2FzdD09PTA/Ik9uIHRoZSBiZWFjaCI6YS5jb2FzdCsiIG1pbGVzIixiLmNvYXN0PT09MD8iT24gdGhlIGJlYWNoIjpiLmNvYXN0KyIgbWlsZXMiLGJlc3QoYS5jb2FzdCxiLmNvYXN0LHRydWUpLGJlc3QoYi5jb2FzdCxhLmNvYXN0LHRydWUpKTsKICBoKz1yb3coIkRpbmluZyBhbmQgU2hvcHBpbmciLGRpbmluZ0xhYmVsKGEuZGluaW5nfHwyKSxkaW5pbmdMYWJlbChiLmRpbmluZ3x8MiksYmVzdChhLmRpbmluZ3x8MixiLmRpbmluZ3x8MixmYWxzZSksYmVzdChiLmRpbmluZ3x8MixhLmRpbmluZ3x8MixmYWxzZSkpOwogIGgrPXJvdygiTGlmZXN0eWxlIFNjb3JlIixyYXRpbmdCYXIobHNBKSxyYXRpbmdCYXIobHNCKSxiZXN0KGxzQSxsc0IsZmFsc2UpLGJlc3QobHNCLGxzQSxmYWxzZSkpOwogIGgrPSc8L3Rib2R5PjwvdGFibGU+PC9kaXY+JzsKCiAgLy8gT3ZlcmFsbCBMaXZhYmlsaXR5IFJhdGluZwogIGgrPSc8ZGl2IGNsYXNzPSJubGctc2VjdGlvbiI+PGRpdiBjbGFzcz0ibmxnLXNlY3Rpb24tdGl0bGUiPk92ZXJhbGwgTGl2YWJpbGl0eSBSYXRpbmc8L2Rpdj48dGFibGUgY2xhc3M9Im5sZy10YWJsZSI+PHRoZWFkPjx0cj48dGg+PC90aD48dGg+JythLm4rJzwvdGg+PHRoPicrYi5uKyc8L3RoPjwvdHI+PC90aGVhZD48dGJvZHk+JzsKICBoKz1yb3coIlJhdGluZyIscmF0aW5nQmFyKGEucmF0aW5nKSxyYXRpbmdCYXIoYi5yYXRpbmcpLGJlc3QoYS5yYXRpbmcsYi5yYXRpbmcsZmFsc2UpLGJlc3QoYi5yYXRpbmcsYS5yYXRpbmcsZmFsc2UpKTsKICBoKz0nPC90Ym9keT48L3RhYmxlPjwvZGl2Pic7CgogIHJlc3VsdERpdi5pbm5lckhUTUw9aDsKICByZXN1bHREaXYuY2xhc3NOYW1lPSJubGctcmVzdWx0IGFjdGl2ZSI7CiAgcmVzdWx0RGl2LnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjoic21vb3RoIixibG9jazoic3RhcnQifSk7Cn0KfSkoKTsK